唉,C完全没有学好,本来挺简单的一个字符消息,在实现的时候,弄了好久弄不出来...............
当按下会产生字符的键,比如说a-z,0-9之类的时候会产生字符消息,他们包括:
字符 |
死字符 | |
非系统字符 |
WM_CHAR |
WM_DEADCHAR |
系统字符 |
WM_SYSCHAR |
WM_SYSDEADCHAR |
所谓死字符呢,就是在一些带音调之类的字母里,调节音调,但是又不真正产生字符的键。一般是不用理会的,因为即便产生了这个消息,也会将改好音调的字符发送到WM_CHAR,直接用就得了。
既然是消息,和其他消息一样,字符消息的参数也保存在lParam和wParam。
保存在lParam中的和键盘消息一样,都是些按键的信息。而wParam就不是虚拟键码,而是具体字符的ANSI或Unicode字符代码。
在产生字符消息的同时,键盘消息也是存在的。
比如说单击a的同时,产生了这样的消息:
消息 |
按键或者代码 |
WM_KEYDOWN |
「A」的虚拟键码(0x41) |
WM_CHAR |
「a」的字符代码(0x61) |
WM_KEYUP |
「A」的虚拟键码(0x41) |
一直按的时候,会产生这样的消息:
消息 |
按键或者代码 |
WM_KEYDOWN |
「A」的虚拟键码(0x41) |
WM_CHAR |
「a」的字符代码(0x61) |
WM_KEYDOWN |
「A」的虚拟键码(0x41) |
WM_CHAR |
「a」的字符代码(0x61) |
WM_KEYDOWN |
「A」的虚拟键码(0x41) |
WM_CHAR |
「a」的字符代码(0x61) |
WM_KEYDOWN |
「A」的虚拟键码(0x41) |
WM_CHAR |
「a」的字符代码(0x61) |
WM_KEYUP |
「A」的虚拟键码(0x41) |
消息 |
按键或者代码 |
WM_KEYDOWN |
虚拟键码VK_SHIFT (0x10) |
WM_KEYDOWN |
「A」的虚拟键码(0x41) |
WM_CHAR |
「A」的字符代码(0x41) |
WM_KEYUP |
「A」的虚拟键码(0x41) |
WM_KEYUP |
虚拟键码VK_SHIFT(0x10) |











