高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

WndProcの不思議

 上の続きで、さらに気になったことがもう一つ。WndProcをオーバーライドしてみると、なぜかWM_KEYDOWNやWM_KEYUPなどといったメッセージが来ません。キーを押してみても、送られてくるのは定期的に呼び出されているWM_GETICONのみ。子ウィンドウ(コントロール)で処理されたきり、送られてきてないのでしょうか?
どうもC#のWndProcには、ちょっと変わったところが多いようです。Application.AddMessageFilterあたりを使えばいいのかも知れませんね。


 ちなみに、WndProcの引数 System.Windows.Forms.Messageですが、これをToStringで表示すると、LParamやWParamなどが16進数で表示されるほか、メッセージコードとWM_GETICONなどといった定数名も表示されます(特にないものにはメッセージコードだけが表示されます)。結構便利かも。