2002-12-03 101620

ワープロなどだと、「'」の代わりに「’」を使ったりするんですね。まあそれ自体は構わないんですが、それが入ったメールをcharsetなし(つまりus-ascii)、Content-Transfer-Encodingなし(つまり7bit)で送るのはどうかと。そもそも文字の意味としては、「’」は引用符であってアポストロフィではないので、「Don’t」なんていうのは意味としておかしくないんでしょうか?

これも、色々なフォントを組み合わせて使えなかった時代に、見てくれを重視した名残なんでしょうか。

DialogProc

DialogProcはWindowProcと違って、処理した場合にはTRUE、処理しない場合にはFALSEを返し、DefWindowProcを呼んではいけないというのが基本なのですが、デフォルトの処理をしてから特別な処理をしたい場合は、DefWindowProcを呼んでもいいんでしょうか?。MFCのソースなんかを見ていると、CDialogの派生クラスのメッセージハンドラの中から親クラスのメッセージハンドラを呼び出すと、最終的にはDefWindowProcにたどり着いているように見えます。

通常のダイアログだと、WM_INITDIALOGとWM_COMMAND, WM_NOTIFY程度しか処理しないのが普通だと思うのであまり問題にならないですが、気になります。ダイアログ独自のメッセージではない場合、やはりDialogProcの呼び出し元はDefWindowProcを呼び出しているであろうから、DialogProcの中からDefWindowProcを呼び出して、結果をSetWindowLongでDWL_MSGRESULTに格納してからTRUEを返してしまっても問題ない気がしますが、真相はいかに。

そもそも、ダイアログだけプロシージャが違うというのもWindowsの変なところですね。

DialogProc(2)

とか書いていたら、ダイアログボックスの概要なんていうページを発見。このページの、「デフォルトのメッセージ処理」というところにダイアログプロシージャがデフォルトでどのメッセージに対して何をするかが書いてあります。しかし出典が見つかりませんでした。

このとおりに動くとしたら、ダイアログプロシージャ内からDefWindowProcを呼び出して、TRUEを返すという方法はそれなりに使えそうです。後は実験してみるしかないでしょうか。