首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请教WM_KEYDOWN和WM_CHAR消息的区别

2012-05-16 
请问WM_KEYDOWN和WM_CHAR消息的区别?请问WM_KEYDOWN和WM_CHAR消息的区别?这2个消息分别是在什么情况下产生

请问WM_KEYDOWN和WM_CHAR消息的区别?
请问WM_KEYDOWN和WM_CHAR消息的区别?这2个消息分别是在什么情况下产生的?

[解决办法]
msdn:
The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR message contains the character code of the key that was pressed.
[解决办法]
WM_KEYDOWN:就是在你按下键盘上的按键时发生,
WM_CHAR:和WM_KEYDOWN差不多,不过它会传递你按下键的信息
[解决办法]
WM_KEYDOWN:只要你按下键盘上的按键时就会发生;
WM_CHAR:只有按下字符键时才会产生。

可以说WM_CHAR只是WM_KEYDOWN的特殊情况
[解决办法]

WM_CHAR消息只响应字符按键和部分控制符
(有很多控制字符不响应 不响应的键如下:
Tab键///Caps Lock大小写切换键//ESC键///F1~F12///SHIFT///CTRL///ALT///方向键///方向键上方键盘区///Num Lock键)

WM_KEYDOWN响兴所有按键消息(Alt键///Print Screen SysRq截屏键不响兴)

WM_CHAR区分大小写和SHIFT+数字,而WM_KEYDOWN只返回大写字母没有SHIFT作用
例如:
//// 按下F键 不管处于大写或小写状态 WM_KEYDOWN都返回70 (ASCII对应大写F) 而WM_CHAR区分大小写
//// SHITF+1 WM_CHAR中的wParam是33 (ASCII对应!) WM_KEYDOWN中的是49 (ASCII对应1)

热点排行