最近在玩WTL的时候,需要处理到回车和ESC键的问题,于是和以前在MFC的时候,老样子,直接写PreTranslateMessage来抓键盘消息(其实我比较喜欢在OnOK或者OnCancel中处理,毕竟很多时候,重载这2个方法,已经能满足要求了) ,结果发现WTL 的PreTranslateMessage 中居然过滤不到按“Enter”和“ESC“键的时候WM_KEYDOWN消息,这会儿傻了~~
于是翻看资料,找信息,终于找到一点资料,故整理了一下,再加上自己的一点实践中获得的知识,写一个小心得吧。
建个Dialog Based(Modal)的工程,编译运行起来,用Spy++抓窗口消息,会发现,如下的一段记录:
<00077> 000E0E26 P WM_KEYDOWN nVirtKey:VK_RETURN cRepeat:1 ScanCode:1C fExtended:1 fAltDown:0 fRepeat:0 fUp:0
<00078> 000E0E26 S WM_GETDLGCODE
<00079> 000E0E26 R WM_GETDLGCODE fuDlgCode:0000
<00080> 000E0E26 S WM_GETDLGCODE
<00081> 000E0E26 R WM_GETDLGCODE fuDlgCode:0000
<00082> 000E0E26 S DM_GETDEFID
<00083> 000E0E26 R DM_GETDEFID wHasDef:DC_HASDEFID wDefID:0001
<00084> 000E0E26 S WM_COMMAND w