yangfanxing__ 发表于 2008-10-8 18:06

WM_KEYDOWN和WM_CHAR不能同时映射消息么???

VC++工程下做一下操作:
添加消息WM_KEYDOWN,对应执行处理函数1——功能:显示键值;OK!
再添加消息WM_CHAR,对应执行函数2——功能:显示按下的字符。

此时,按下KEY时执行函数2,而不执行函数1,(亦即只显示字符,不显示键值)
这里的执行有优先的么?为什么函数2不被执行???请高人指教~

风花雪月 发表于 2008-10-9 10:58

在对话框里?什么键不响应?

yangfanxing__ 发表于 2008-10-9 13:48

回复 沙发 风花雪月 的帖子

不在对话框里,简单的屏幕输出。

所有的键(26个字母)都这样样啊~参考书上没给出理由,只是提到了这一现象。
想确认一下,所以在此一问了……

erdgzw 发表于 2008-10-10 08:10

可以同时响应WM_KEYDOWN和WM_CHAR消息。
WM_KEYDOWN既包含字母也包含特殊字符。
WM_CHAR 只是字母。

是不是你的WM_KEYDOWN消息被窗口中的子窗口接收去了。

yangfanxing__ 发表于 2008-10-10 19:04

回复 地板 erdgzw 的帖子

No 子窗口啊。
单独的时候都可以响应,写在一起就只响应WM_CHAR 。所以不解。:hug:

另细节:两个响应的函数都对同一个字符串变量进行字符串赋值(当然是不同的字符串),最后在::ONDRAW函数中显示这一字符串变量,显示的结果是WM_CHAR 对应响应消息的字符串。

cooller 发表于 2009-1-2 00:54

根据你讲得内容,实际上按下键盘字母的时候,函数2执行了。但是你还想执行函数1?是否是这样的意图呢?如果是这样,建议在执行函数2之后,发送键被按下去的消息,从而可以激活函数1.
页: [1]
查看完整版本: WM_KEYDOWN和WM_CHAR不能同时映射消息么???