更新时间:2016-01-06 19:21:55浏览次数:1+次
case WM_SYSKEYDOWN://系统键响应的消息
switch(wParam)
{
case VK_F10://F10是系统键,在此拦截
MessageBox(hwnd,_T("F10"),_T(""),0);
break;
case VK_MENU://系统优先
MessageBox(hwnd,_T("系统Alt键"),_T(""),0);
break;
}
return 0;
case WM_KEYDOWN://普通键响应的消息
switch(wParam)
{
case VK_CONTROL:
MessageBox(hwnd,_T("Ctrl键"),_T(""),0);
break;
case VK_MENU:
MessageBox(hwnd,_T("应用Alt键"),_T(""),0);
break;
}
return 0;
我们这里只给出了三个按键的测试代码,给出了代码如何写的例子。键盘的其他按键,你可以自己去补充测试。我已经测试了,发现,只有F10和Alt是经过WM_SYSKEYDOWN处理的。同时,Alt在WM_KEYDOWN消息也会被处理,不过WM_SYSKEYDOWN消息优先处理。系统处理后,就不给WM_KEYDOWN处理了。不过你拦截之后,就可以自己让WM_KEYDOWN消息接着处理。不过这个已经和系统无关了,是你自己的逻辑了。//鼠标按键左右中键
#define VK_LBUTTON 0x01
#define VK_RBUTTON 0x02
#define VK_MBUTTON 0x04
//常用的按键
#define VK_BACK 0x08//退格键
#define VK_TAB 0x09//Tab键
#define VK_RETURN 0x0D//回车键
#define VK_SHIFT 0x10//Shift键
#define VK_CONTROL 0x11//Ctrl键
#define VK_MENU 0x12//Alt键
#define VK_CAPITAL 0x14//CapsLock大小写锁定键
#define VK_ESCAPE 0x1B//ESC键
//辅助编辑键
#define VK_SPACE 0x20//空格键
#define VK_PRIOR 0x21//PageUp键
#define VK_NEXT 0x22//PageDown键
#define VK_END 0x23//End键
#define VK_HOME 0x24//Home键
#define VK_LEFT 0x25//光标←键
#define VK_UP 0x26//光标↑键
#define VK_RIGHT 0x27//光标→键
#define VK_DOWN 0x28//光标↓键
#define VK_SNAPSHOT 0x2C//截屏快照,将当前屏幕画面以位图形式存入剪切板
#define VK_INSERT 0x2D//插入模式和覆盖模式切换键
#define VK_DELETE 0x2E//Delete键
/* 字母和数字的虚拟键码值就是ASCII编码值
* VK_0 - VK_9(0x30 - 0x39)
* VK_A - VK_Z(0x41 - 0x5A)
*/
//Windows徽标键,左右两个键
#define VK_LWIN 0x5B
#define VK_RWIN 0x5C
//数字键盘上的按键
#define VK_NUMPAD0 0x60
#define VK_NUMPAD1 0x61
#define VK_NUMPAD2 0x62
#define VK_NUMPAD3 0x63
#define VK_NUMPAD4 0x64
#define VK_NUMPAD5 0x65
#define VK_NUMPAD6 0x66
#define VK_NUMPAD7 0x67
#define VK_NUMPAD8 0x68
#define VK_NUMPAD9 0x69
#define VK_MULTIPLY 0x6A//乘号*
#define VK_ADD 0x6B//加号+
#define VK_SUBTRACT 0x6D//减号-
#define VK_DECIMAL 0x6E//小数点.
#define VK_DIVIDE 0x6F//除号/
//功能键
#define VK_F1 0x70
#define VK_F2 0x71
#define VK_F3 0x72
#define VK_F4 0x73
#define VK_F5 0x74
#define VK_F6 0x75
#define VK_F7 0x76
#define VK_F8 0x77
#define VK_F9 0x78
#define VK_F10 0x79
#define VK_F11 0x7A
#define VK_F12 0x7B
//F12之后的是预留的
#define VK_F13 0x7C
#define VK_F14 0x7D
#define VK_F15 0x7E
#define VK_F16 0x7F
#define VK_F17 0x80
#define VK_F18 0x81
#define VK_F19 0x82
#define VK_F20 0x83
#define VK_F21 0x84
#define VK_F22 0x85
#define VK_F23 0x86
#define VK_F24 0x87
以上列出的虚拟键码,我都标注了含义,你可以自行测试是否为系统键。对于这些虚拟键码,删掉了不常用的一些,有的你的键盘上都没有,就没有列举出来了。相关资讯