刚上手C#没几天,要做一个3D相关项目的UI,并且和一个DirectX的应用模块(封装成了DLL)结合。。。搞了半天在一些WinForm控件上按上下左右和其他一些特殊按键的时候,都不响应ON_KEYDOWN的事件,重写了一下WndProc发觉按这些键的时候完全收不到WM_KEYDOWN和WM_KEYUP的消息。
怒了,编了一个MessageFilter。。。。把所有消息都转给DX的那个模块了。。。懒人懒方法。。
不过又翻了一些文章。。。。找到了这个
How to trap keystrokes in controls by using Visual C#
http://support.microsoft.com/kb/320584/en-us
发觉原来dotNet FW中强制把这些按键归为WM_SYSKEYDOWN消息所属,不再以WM_KEYDOWN的VK_XXXX形式表示。
汗,WM_SYSKEYDOWN。。。一万年都没有用过这个消息。。。