WM_KEYDOWN和WM_CHAR不能同时映射消息么???
VC++工程下做一下操作:添加消息WM_KEYDOWN,对应执行处理函数1——功能:显示键值;OK!
再添加消息WM_CHAR,对应执行函数2——功能:显示按下的字符。
此时,按下KEY时执行函数2,而不执行函数1,(亦即只显示字符,不显示键值)
这里的执行有优先的么?为什么函数2不被执行???请高人指教~ 在对话框里?什么键不响应?
回复 沙发 风花雪月 的帖子
不在对话框里,简单的屏幕输出。所有的键(26个字母)都这样样啊~参考书上没给出理由,只是提到了这一现象。
想确认一下,所以在此一问了…… 可以同时响应WM_KEYDOWN和WM_CHAR消息。
WM_KEYDOWN既包含字母也包含特殊字符。
WM_CHAR 只是字母。
是不是你的WM_KEYDOWN消息被窗口中的子窗口接收去了。
回复 地板 erdgzw 的帖子
No 子窗口啊。单独的时候都可以响应,写在一起就只响应WM_CHAR 。所以不解。:hug:
另细节:两个响应的函数都对同一个字符串变量进行字符串赋值(当然是不同的字符串),最后在::ONDRAW函数中显示这一字符串变量,显示的结果是WM_CHAR 对应响应消息的字符串。 根据你讲得内容,实际上按下键盘字母的时候,函数2执行了。但是你还想执行函数1?是否是这样的意图呢?如果是这样,建议在执行函数2之后,发送键被按下去的消息,从而可以激活函数1.
页:
[1]