VC++中单个键盘按键的响应
最后更新于:2022-04-01 20:35:05
关于如何在VC++程序中自定义热键(或称组合键)及其响应,我在之前的博客中已经作了详细的介绍,那么当遇到的是单个键盘按键的响应时,我们又该怎么解决呢?这时,我们可以采用afx_msg BOOL PreTranslateMessage (MSG* pMsg) 这个函数很方便的实现。
但是在此之前,我们必须首先了解键盘按键对应的十进制ASCII码值,下面这张表是每个键盘按键对应的十进制ASCII码值表,会给我们带来很大的方便:
注:表中的阴影部分为键盘上的数字小键盘分区。
下面结合实例来详细说明(完整实例可在我的CSDN资源中下载:[http://download.csdn.net/detail/margin1988/6648153](http://download.csdn.net/detail/margin1988/6648153)):
(1)在对话框.h文件中添加函数声明:
~~~
afx_msg BOOL PreTranslateMessage(MSG* pMsg);
~~~
(2)在对话框的.cpp文件中实现该函数功能:
~~~
BOOL CPoint23Dlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case 65:
MessageBox("您按了“A键”");
break;
//其它按键响应
}
return true;//不再响应其它按键(很重要)
}
return CDialog::PreTranslateMessage(pMsg);
}
~~~
';
Esc | 27 | #3 | 51 | >. | 190 | M | 77 | ← | 37 |
F1 | 112 | $4 | 52 | ?/ | 191 | N | 78 | ↑ | 38 |
F2 | 113 | %5 | 53 | Ctrl | 17 | O | 79 | → | 39 |
F3 | 114 | ^6 | 54 | 左徽标 | 91 | P | 80 | ↓ | 40 |
F4 | 115 | &7 | 55 | 右徽标 | 92 | Q | 81 | Num Lock | 144 |
F5 | 116 | *8 | 56 | Alt | 18 | R | 82 | / | 111 |
F6 | 117 | (9 | 57 | Space | 32 | S | 83 | * | 106 |
F7 | 118 | _- | 189 | 鼠标右快捷键 | 93 | T | 84 | - | 109 |
F8 | 119 | += | 187 | A | 65 | U | 85 | + | 107 |
F9 | 120 | Backspace | 8 | B | 66 | V | 86 | . | 110 |
F10 | 121 | Tab | 9 | C | 67 | W | 87 | 0 | 96 |
F11 | 122 | {[ | 219 | D | 68 | X | 88 | 1 | 97 |
F12 | 123 | }] | 221 | E | 69 | Y | 89 | 2 | 98 |
PrScrn SysRq | 44 | |\ | 220 | F | 70 | Z | 90 | 3 | 99 |
Scroll Lock | 145 | Caps Lock | 20 | G | 71 | Insert | 45 | 4 | 100 |
Pause Break | 19 | :; | 186 | H | 72 | Home | 36 | 5 | 101 |
~` | 192 | “’ | 222 | I | 73 | PgUp | 33 | 6 | 102 |
)0 | 48 | Enter | 13 | J | 74 | Delete | 46 | 7 | 103 |
!1 | 49 | Shift | 16 | K | 75 | End | 35 | 8 | 104 |
@2 | 50 | <, | 188 | L | 76 | PgDn | 34 | 9 | 105 |