游戏中设置界面常用的快捷键文本生成函数,比如“Ctrl + Z”,“Shift + C”
/************************************************************************/
const char *g_VKeyText[] =
{
"", //0
"LBUTTON", //#define VK_LBUTTON 0x01
"RBUTTON", //#define VK_RBUTTON 0x02
"CANCEL", //#define VK_CANCEL 0x03
"MBUTTON", //#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */
"XBUTTON1", //#define VK_XBUTTON1 0x05 /* NOT contiguous with L & RBUTTON */
"XBUTTON2", //#define VK_XBUTTON2 0x06 /* NOT contiguous with L & RBUTTON */
"", // * 0x07 : unassigned
"BackSpace", //#define VK_BACK 0x08
"Tab", //#define VK_TAB 0x09
"", // * 0x0A - 0x0B : reserved
"", // * 0x0A - 0x0B : reserved
"CLEAR", //#define VK_CLEAR 0x0C
"RETURN", //#define VK_RETURN 0x0D
"", // 0x0E
"", // 0x0F
"SHIFT", //#define VK_SHIFT 0x10
"CONTROL", //#define VK_CONTROL 0x11
"MENU", //#define VK_MENU 0x12
"PAUSE", //#define VK_PAUSE 0x13
"CAPITAL", //#define VK_CAPITAL 0x14
"KANA", //#define VK_KANA 0x15
"", // 0x16
"JUNJA", //#define VK_JUNJA 0x17
"FINAL", //#define VK_FINAL 0x18
"HANJA", //#define VK_HANJA 0x19
"", // 0x1A
"ESCAPE", //#define VK_ESCAPE 0x1B
"CONVERT", //#define VK_CONVERT 0x1C
"NONCONVERT", //#define VK_NONCONVERT 0x1D
"ACCEPT", //#define VK_ACCEPT 0x1E
"MODECHANGE", //#define VK_MODECHANGE 0x1F
"SPACE", //#define VK_SPACE 0x20
"PRIOR", //#define VK_PRIOR 0x21
"NEXT", //#define VK_NEXT 0x22
"END", //#define VK_END 0x23
"HOME", //#define VK_HOME 0x24
"LEFT", //#define VK_LEFT 0x25
"UP", //#define VK_UP 0x26
"RIGHT", //#define VK_RIGHT 0x27
"DOWN", //#define VK_DOWN 0x28
"SELECT", //#define VK_SELECT 0x29
"PRINT", //#define VK_PRINT 0x2A
"EXECUTE", //#define VK_EXECUTE 0x2B
"SNAPSHOT", //#define VK_SNAPSHOT 0x2C
"INSERT", //#define VK_INSERT 0x2D
"DELETE", //#define VK_DELETE 0x2E
"HELP", //#define VK_HELP 0x2F
"0", // * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
"1", // 0x31
"2", // 0x32
"3", // 0x33
"4", // 0x34
"5", // 0x35
"6", // 0x36
"7", // 0x37
"8", // 0x38
"9", // 0x39
"", // 0x3A
"", // 0x3B
"", // 0x3C
"", // 0x3D
"", // 0x3E
"", // 0x3F
"", // * 0x40 : unassigned
"A", // * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
"B", // 0x42
"C", // 0x43
"D", // 0x44
"E", // 0x45
"F", // 0x46
"G", // 0x47
"H", // 0x48
"I", // 0x49
"J", // 0x4A
"K", // 0x4B
"L", // 0x4C
"M", // 0x4D
"N", // 0x4E
"O", // 0x4F
"P", // 0x50
"Q", // 0x51
"R", // 0x52
"S", // 0x53
"T", // 0x54
"U", // 0x55
"V", // 0x56
"W", // 0x57
"X", // 0x58
"Y", // 0x59
"Z", // 0x5A
"LWIN", //#define VK_LWIN 0x5B
"RWIN", //#define VK_RWIN 0x5C
"APPS", //#define VK_APPS 0x5D
"", // * 0x5E : reserved
"SLEEP", //#define VK_SLEEP 0x5F
"NUMPAD0", //#define VK_NUMPAD0 0x60
"NUMPAD1", //#define VK_NUMPAD1 0x61
"NUMPAD2", //#define VK_NUMPAD2 0x62
"NUMPAD3", //#define VK_NUMPAD3 0x63
"NUMPAD4", //#define VK_NUMPAD4 0x64
"NUMPAD5", //#define VK_NUMPAD5 0x65
"NUMPAD6", //#define VK_NUMPAD6 0x66
"NUMPAD7", //#define VK_NUMPAD7 0x67
"NUMPAD8", //#define VK_NUMPAD8 0x68
"NUMPAD9", //#define VK_NUMPAD9 0x69
"MULTIPLY", //#define VK_MULTIPLY 0x6A
"ADD", //#define VK_ADD 0x6B
"SEPARATOR", //#define VK_SEPARATOR 0x6C
"SUBTRACT", //#define VK_SUBTRACT 0x6D
"DECIMAL", //#define VK_DECIMAL 0x6E
"DIVIDE", //#define VK_DIVIDE 0x6F
"F1", //#define VK_F1 0x70
"F2", //#define VK_F2 0x71
"F3", //#define VK_F3 0x72
"F4", //#define VK_F4 0x73
"F5", //#define VK_F5 0x74
"F6", //#define VK_F6 0x75
"F7", //#define VK_F7 0x76
"F8", //#define VK_F8 0x77
"F9", //#define VK_F9 0x78
"F10", //#define VK_F10 0x79
"F11", //#define VK_F11 0x7A
"F12", //#define VK_F12 0x7B
"F13", //#define VK_F13 0x7C
"F14", //#define VK_F14 0x7D
"F15", //#define VK_F15 0x7E
"F16", //#define VK_F16 0x7F
"F17", //#define VK_F17 0x80
"F18", //#define VK_F18 0x81
"F19", //#define VK_F19 0x82
"F20", //#define VK_F20 0x83
"F21", //#define VK_F21 0x84
"F22", //#define VK_F22 0x85
"F23", //#define VK_F23 0x86
"F24", //#define VK_F24 0x87
"", // * 0x88 - 0x8F : unassigned
"", // 0x89
"", // 0x8A
"", // 0x8B
"", // 0x8C
"", // 0x8D
"", // 0x8E
"", // 0x8F
"NUMLOCK", //#define VK_NUMLOCK 0x90
"SCROLL", //#define VK_SCROLL 0x91
};
/*
* fsModifiers,组合键
* virtualKey, 虚拟键
* pText, 输出文本
*/
LPSTR MakeHotKeyText(unsigned int __in fsModifiers, unsigned int __in vk, LPSTR __out pText)
{
pText[0] = '\0';
if (fsModifiers & MOD_CONTROL)
{
strcat(pText, "Ctrl + ");
}
if (fsModifiers & MOD_SHIFT)
{
strcat(pText, "Shift + ");
}
if (fsModifiers & MOD_ALT)
{
strcat(pText, "Alt + ");
}
if (fsModifiers & MOD_WIN)
{
strcat(pText, "Win + ");
}
if (vk < _countof(g_VKeyText) )
strcat(pText, g_VKeyText[vk]);
else
pText[0] = '\0';
return pText;
}