case WM_KEYDOWN:
switch(wparam)
{
case VK_ESCAPE:
PostQuitMessage(0);
break;
}
break;
例如上面例子中,Esc键对应的是VK_ESCAPE,那其他的按键对应的值应该怎么才能查出呢?谁能提供一个列表或者查的方法?
switch(wparam)
{
case VK_ESCAPE:
PostQuitMessage(0);
break;
}
break;
例如上面例子中,Esc键对应的是VK_ESCAPE,那其他的按键对应的值应该怎么才能查出呢?谁能提供一个列表或者查的方法?
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
VK_XBUTTON1 05 Windows 2000/XP: X1 mouse button
VK_XBUTTON2 06 Windows 2000/XP: X2 mouse button
— 07 Undefined
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
— 0A–0B Reserved
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
— 0E–0F Undefined
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_PAUSE 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
VK_KANA 15 IME Kana mode
VK_HANGUEL 15 IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
VK_HANGUL 15 IME Hangul mode
— 16 Undefined
VK_JUNJA 17 IME Junja mode
VK_FINAL 18 IME final mode
VK_HANJA 19 IME Hanja mode
VK_KANJI 19 IME Kanji mode
— 1A Undefined
VK_ESCAPE 1B ESC key
VK_CONVERT 1C IME convert
VK_NONCONVERT 1D IME nonconvert
VK_ACCEPT 1E IME accept
VK_MODECHANGE 1F IME mode change request
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
VK_PRINT 2A PRINT key
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C PRINT SCREEN key
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
30 0 key
31 1 key
32 2 key
33 3 key
34 4 key
35 5 key
36 6 key
37 7 key
38 8 key
39 9 key
— 3A–40 Undefined
41 A key
42 B key
43 C key
44 D key
45 E key
46 F key
47 G key
48 H key
49 I key
4A J key
4B K key
4C L key
4D M key
4E N key
4F O key
50 P key
51 Q key
52 R key
53 S key
54 T key
55 U key
56 V key
57 W key
58 X key
59 Y key
5A Z key
VK_LWIN 5B Left Windows key (Microsoft® Natural® keyboard)
VK_RWIN 5C Right Windows key (Natural keyboard)
VK_APPS 5D Applications key (Natural keyboard)
— 5E Reserved
VK_SLEEP 5F Computer Sleep key
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_MULTIPLY 6A Multiply key
VK_ADD 6B Add key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H F21 key
VK_F22 85H F22 key
VK_F23 86H F23 key
VK_F24 87H F24 key
— 88–8F Unassigned
VK_NUMLOCK 90 NUM LOCK key
VK_SCROLL 91 SCROLL LOCK key
92–96 OEM specific
— 97–9F Unassigned
VK_LSHIFT A0 Left SHIFT key
VK_RSHIFT A1 Right SHIFT key
VK_LCONTROL A2 Left CONTROL key
VK_RCONTROL A3 Right CONTROL key
VK_LMENU A4 Left MENU key
VK_RMENU A5 Right MENU key
VK_BROWSER_BACK A6 Windows 2000/XP: Browser Back key
VK_BROWSER_FORWARD A7 Windows 2000/XP: Browser Forward key
VK_BROWSER_REFRESH A8 Windows 2000/XP: Browser Refresh key
VK_BROWSER_STOP A9 Windows 2000/XP: Browser Stop key
VK_BROWSER_SEARCH AA Windows 2000/XP: Browser Search key
VK_BROWSER_FAVORITES AB Windows 2000/XP: Browser Favorites key
VK_BROWSER_HOME AC Windows 2000/XP: Browser Start and Home key
VK_VOLUME_MUTE AD Windows 2000/XP: Volume Mute key
VK_VOLUME_DOWN AE Windows 2000/XP: Volume Down key
VK_VOLUME_UP AF Windows 2000/XP: Volume Up key
VK_MEDIA_NEXT_TRACK B0 Windows 2000/XP: Next Track key
VK_MEDIA_PREV_TRACK B1 Windows 2000/XP: Previous Track key
VK_MEDIA_STOP B2 Windows 2000/XP: Stop Media key
VK_MEDIA_PLAY_PAUSE B3 Windows 2000/XP: Play/Pause Media key
VK_LAUNCH_MAIL B4 Windows 2000/XP: Start Mail key
VK_LAUNCH_MEDIA_SELECT B5 Windows 2000/XP: Select Media key
VK_LAUNCH_APP1 B6 Windows 2000/XP: Start Application 1 key
VK_LAUNCH_APP2 B7 Windows 2000/XP: Start Application 2 key
— B8-B9 Reserved
VK_OEM_1 BA Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the ';:' key
VK_OEM_PLUS BB Windows 2000/XP: For any country/region, the '+' key
VK_OEM_COMMA BC Windows 2000/XP: For any country/region, the ',' key
VK_OEM_MINUS BD Windows 2000/XP: For any country/region, the '-' key
VK_OEM_PERIOD BE Windows 2000/XP: For any country/region, the '.' key
VK_OEM_2 BF Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the '/?' key
VK_OEM_3 C0 Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the '`~' key
— C1–D7 Reserved
— D8–DA Unassigned
VK_OEM_4 DB Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the '[{' key
VK_OEM_5 DC Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the '\|' key
VK_OEM_6 DD Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the ']}' key
VK_OEM_7 DE Used for miscellaneous characters; it can vary by keyboard.
Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key
VK_OEM_8 DF Used for miscellaneous characters; it can vary by keyboard.
— E0 Reserved
E1 OEM specific
VK_OEM_102 E2 Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
E3–E4 OEM specific
VK_PROCESSKEY E5 Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
E6 OEM specific
VK_PACKET E7 Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Re in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
— E8 Unassigned
E9–F5 OEM specific
VK_ATTN F6 Attn key
VK_CRSEL F7 CrSel key
VK_EXSEL F8 ExSel key
VK_EREOF F9 Erase EOF key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key
VK_NONAME FC Reserved for future use
VK_PA1 FD PA1 key
VK_OEM_CLEAR FE Clear key
HOOKAPI(void) GetKeyInfo(WPARAM wParam, LPARAM lParam,KEYINFO *pKeyInfo, BOOL full)
{
GetKeyNameText(lParam, pKeyInfo->KeyName, sizeof(pKeyInfo->KeyName));
pKeyInfo->KeyName[sizeof(pKeyInfo->KeyName)-1] = 0;
pKeyInfo->RepeatCount = (WORD)(lParam & 0xffff);
pKeyInfo->OEMScanCode = (WORD)((lParam & 0xff0000) >> 16);
pKeyInfo->Extended = ((lParam >> 24) & 1)==1;
pKeyInfo->AltDown = ((lParam >> 29) & 1)==1;
pKeyInfo->PreviousDown= ((lParam >> 30) & 1)==1;
pKeyInfo->Down = ((lParam >> 31) & 1)==1; //扩充内容如下
pKeyInfo->ScanCode = (WORD)wParam;
if(full)
{
//以下得到扩充的Shift和Control状态
pKeyInfo->ShiftDown = ((GetKeyState(VK_SHIFT) & 0xff00) >> 8) == 0x00ff;
pKeyInfo->ControlDown = ((GetKeyState(VK_CONTROL) & 0xff00) >> 8) == 0x00ff;
// pKeyInfo->AltDown = ((GetKeyState(VK_MENU) & 0xff00) >> 8) == 0x00ff; //以下根据键状态计算vFlag,vFlag和vKey正好对应CHotKeyCtrl中的对应值
pKeyInfo->vFlag = 0;
if(pKeyInfo->Extended ) pKeyInfo->vFlag |= HOTKEYF_EXT;
if(pKeyInfo->AltDown ) pKeyInfo->vFlag |= HOTKEYF_ALT;
if(pKeyInfo->ControlDown) pKeyInfo->vFlag |= HOTKEYF_CONTROL;
if(pKeyInfo->ShiftDown ) pKeyInfo->vFlag |= HOTKEYF_SHIFT;
}
}以上函数中的wParam和lParam分别是键盘消息中的wParam和lParam