1 VK_LBUTTON 鼠标左键
2 VK_RBUTTON 鼠标右键
3 VK_CANCEL Ctrl+Break(通常不需要处理)
4 VK_MBUTTON 鼠标中键
8 VK_BACK Backspace
9 VK_TAB Tab
12 VK_CLEAR Num Lock关闭时的数字键盘5
13 VK_RETURN Enter(或者另一个)
16 VK_SHIFT Shift(或者另一个)
17 VK_CONTROL Ctrl(或者另一个)
18 VK_MENU Alt(或者另一个)
19 VK_PAUSE Pause
20 VK_CAPITAL Caps Lock
27 VK_ESCAPE Esc
32 VK_SPACE Spacebar
33 VK_PRIOR Page Up
34 VK_NEXT Page Down
35 VK_END End
36 VK_HOME Home
37 VK_LEFT 左箭头
38 VK_UP 上箭头
39 VK_RIGHT 右箭头
40 VK_DOWN 下箭头
41 VK_SELECT 可选
42 VK_PRINT 可选
43 VK_EXECUTE 可选
44 VK_SNAPSHOT Print Screen
45 VK_INSERT Insert
46 VK_DELETE Delete
47 VK_HELP 可选
48~57 无 主键盘上的0~9
65~90 无 A~Z
96~105 VK_NUMPAD0~VK_NUMPAD9 Num Lock打开时数字键盘上的0~9
106 VK_NULTIPLY 数字键盘上的*
107 VK_ADD 数字键盘上的+
108 VK_SEPARATOR 可选
109 VK_SUBTRACT 数字键盘上的-
110 VK_DECIMAL 数字键盘上的.
111 VK_DIVIDE 数字键盘上的/
112~135 VK_F1~VK_F24 功能键F1~F24
144 VK_NUMLOCK Num Lock
145 VK_SCROLL Scroll Lock
--------------------------------------------------------------------------------
下边三个是MS键盘上的:
--------------------------------------------------------------------------------
十进制值 标识符 Microsoft自然键盘
--------------------------------------------------------------------------------
91 VK_LWIN 左Windows键
92 VK_RWIN 右Windows键
93 VK_APPS Applications键
--------------------------------------------------------------------------------
两种键盘消息:
非系统键 WM_KEYDOWN WM_KEYUP
系统键 WM_SYSKEYDOWN WM_SYSKEYUP
在键盘消息中,虚拟键码都保存在wParam参数中。这些虚拟键码的定义,是在winuser.h文件中,所以当用到键盘的虚拟键码时,要包含这个文件,不过,如果已经包含了windows.h文件,那么就不需要再包含winuser.h文件了,因为windows.h文件已经包含了winuser.h文件。
Print Screen键一般不需要处理。
VK_SELECT、VK_PRINT、VK_EXECUTE和VK_HELP很少出现。
数字和字母的虚拟键码是ASCII码。
F1~F24的功能键中,windows只用到了F1~F10。
用GetKeyState(int):(参数是以VK_开头的虚拟键码)获得所有有开关性质的键的状态(是否按下),比如shift、Alt等。用GetAsyncKeySate();获得当前某键的状态。
WM_SYSKEYDOWN和WM_SYSKEYUP消息由Windows系统函数使用,所以用户可以不管她。
WM_CHAR和WM_DEADCHAR消息是从WM_KEYDOWN得到的,而WM_SYSCHAR和WM_SYSDEADCHAR消息是从WM_SYSKEYDOWN消息得到的。在某些非U.S.英语键盘上,有些键用于给字母加上音调,因为它们本身不产生字符,所以称之为“死键”。
RegisterClass有两个版本,分别是ANSI版本的RegisterClassA和Uncode版本的RegisterClassW。如果程序用RegisterClass注册窗口类,那么当定义UNICODE标识符时就调用RegisterClassW,否则就调用RegisterClassA。同一窗口过程可能会用到两个窗口类,她们有可能用两种不同的版本注册。用下列函数可以获得窗口注册的类型:
fUnicode=IsWindowUnicode(hwnd);
如果hwnd的窗口过程获得Unicode消息,那么变量fUnicode将为TRUE,,这表明窗口是基于用RegisterClassW注册的窗口类。