处理按键和字符消息的基本规则是:如果需要读取输入到窗口的键盘字符,那么您可以处理WM_CHAR消息。如果需要读取光标键、功能键、Delete、Insert、Shift、Ctrl以及Alt键,那么您可以处理WM_KEYDOWN消息。
表6-13 |
按键 | 字符代码 | 产生方法 | ANSI C控制字符 |
Backspace | 0x08 | Ctrl-H | /b |
Tab | 0x09 | Ctrl-I | /t |
Ctrl-Enter | 0x0A | Ctrl-J | /n |
Enter | 0x0D | Ctrl-M | /r |
Esc | 0x1B | Ctrl-[ |
但是Tab键怎么办?Enter、Backspace和Escape键又怎么办?传统上,这些键都产生表6-13列出的ASCII控制字符。但是在Windows中,它们也产生虚拟键码。这些键应该在处理WM_CHAR或者在处理WM_KEYDOWN期间处理吗?
经过10年的考虑(回顾这些年来我写过的Windows程序代码),我更喜欢将Tab、Enter、Backspace和Escape键处理成控制字符,而不是虚拟键。我通常这样处理WM_CHAR:
case WM_CHAR:
//其它行程序
switch (wParam)
{
case '/b': // backspace
//其它行程序
break ;
case '/t': // tab
//其它行程序
break ;
case '/n': // linefeed
//其它行程序
break ;
case '/r': // carriage return
//其它行程序
break ;
default: // character codes
//其它行程序
break ;
}
return 0 ;
博客介绍了处理按键和字符消息的基本规则,读取输入到窗口的键盘字符可处理WM_CHAR消息,读取光标键等可处理WM_KEYDOWN消息。还探讨了Tab、Enter等键的处理方式,作者倾向将其处理成控制字符,通常按此处理WM_CHAR。
584

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



