声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3763|回复: 5

[C/C++] WM_KEYDOWN和WM_CHAR不能同时映射消息么???

[复制链接]
发表于 2008-10-8 18:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

使用道具 举报

发表于 2008-10-9 10:58 | 显示全部楼层
在对话框里?什么键不响应?
 楼主| 发表于 2008-10-9 13:48 | 显示全部楼层

回复 沙发 风花雪月 的帖子

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

所有的键(26个字母)都这样样啊~参考书上没给出理由,只是提到了这一现象。
想确认一下,所以在此一问了……
发表于 2008-10-10 08:10 | 显示全部楼层
可以同时响应WM_KEYDOWN和WM_CHAR消息。
WM_KEYDOWN既包含字母也包含特殊字符。
WM_CHAR 只是字母。

是不是你的WM_KEYDOWN消息被窗口中的子窗口接收去了。
 楼主| 发表于 2008-10-10 19:04 | 显示全部楼层

回复 地板 erdgzw 的帖子

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

另细节:两个响应的函数都对同一个字符串变量进行字符串赋值(当然是不同的字符串),最后在::ONDRAW函数中显示这一字符串变量,显示的结果是WM_CHAR 对应响应消息的字符串。
发表于 2009-1-2 00:54 | 显示全部楼层
根据你讲得内容,实际上按下键盘字母的时候,函数2执行了。但是你还想执行函数1?是否是这样的意图呢?如果是这样,建议在执行函数2之后,发送键被按下去的消息,从而可以激活函数1.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 13:45 , Processed in 0.055109 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表