ASCII码不是仅包含字符,还包含很多控制符键盘上大部分的按键都是与ASCII相对应的,包括空格回车ESC等(ESC按键对应ASCII十进制为27)
WM_CHAR消息只响应字符按键和部分控制符,有很多控制字符不响应不响应的键如下:
Tab键///CapsLock大小写切换键//ESC键///F1~F12///SHIFT///CTRL///ALT///方向键///方向键上方键盘区///NumLock键)
WM_KEYDOWN响应所有按键消息(Alt键///PrintScreenSysRq截屏键不响兴)
WM_CHAR区分大小写和SHIFT+数字,而WM_KEYDOWN只返回大写字母没有SHIFT作用例如:
////按下F键不管处于大写或小写状态WM_KEYDOWN都返回70(ASCII对应大写F)而WM_CHAR区分大小写////SHITF+1WM_CHAR中的wParam是33(ASCII对应!)WM_KEYDOWN中的是49(ASCII对应1)
MSDN文档原文内容:
WM_CHAR是键盘所按下的那个字符的响应可以用来判断是哪个字符的响应(如按下A实现什么功能按下B实现什么功能)
WM_KEYDOWN是键盘按下后的消息响应(只要按下键盘都响应)
本文详细解析了WM_CHAR与WM_KEYDOWN两种Windows消息的区别。WM_CHAR用于响应字符按键,能够区分大小写及是否使用Shift键;而WM_KEYDOWN则响应所有按键,但返回值统一为大写形式,无法体现Shift键的影响。
517

被折叠的 条评论
为什么被折叠?



