纵观整个搜索引擎,这个样的主题文章也很多,就是没有自己亲自试着写写,现在就为大家说说吧(个人观点仅供参考),注册热键顾名思义就是把这个热键注册上去,怎么注册呢,其实人家微软大哥早就为我准备好了一个函数,RegisterHotKey这是一个API函数(以我看这个函数就是个定时器,当遇到用户按了预定义的按键,就会产生WM_HOTKEY消息,类似于时间到了该执行想要的代码)
函数原型如下
BOOL RegisterHotKey(
HWND hWnd, // handle to window
int id, // hot key identifier
UINT fsModifiers, // key-modifier options
UINT vk // virtual-key code
);
说明:
{dy}个参数指定接收WM_HOTKEY消息的窗体句柄
第二个参数热键标识,代表这个热键的{wy}ID,应用程序中的标识值在0x0000和0xbfff之间,DLL中的在0xc000和0xffff之间
第三个参数 指的是附加按键的修改,比如说你按住了CTRL键,这里的值可以选择MOD_ALT,MOD_CONTROL,MOD_SHIFT,MOD_WIN,MOD_KEYUP
第四个参数指的是按键的虚拟码 (这里你可以查找具体的msdn)
上面只是一个注册热键的过,那么热键注册成功呢,当用户按住热键的时候,它就会产生WM_HOTKEY消息(也就是说时间到了,该执行代码了),那么我们的还要处理这个消息来为自己所用,假如用户按住热键我打算让他弹出个对话框,我们可以这样处理这个消息,如果你用的是MFC设计软件,那么你可以在PreTranslateMessage(MSG* pMsg)函数中截获WM_HOTKEY消息,代码如下
{
// TODO: Add your specialized code here and/or call the base class
switch(pMsg->message)
{
case WM_HOTKEY: //截获这个消息来处理自己想要的结果
{
if (pMsg->wParam==(这里是你注册时的热键ID,也是{wy}的))
{
MessageBox("Test is 成功");
}
break;
}
default: //默认的处理
break;
}
return CDialog::PreTranslateMessage(pMsg);
}
剩下的工作就是反注册热键(意思就是注销这个热键),在程序关闭的时候写入下列代码,我是在OnClose中写的 ,你也可以在OnDestroy中写,
UnregisterHotKey(m_hWnd,(注册时的ID)); //这个函数也是个API函数,{dy}个参数是说明你要注销哪个窗口句柄的热键,第二个参数说明是你开始注册的{wy}ID
其实不管是你做任何事情,都要遵循一个顺序,一般都是有一定的规律的,操作系统即使这样复杂,但是里面的东西还是一点点拼凑起来的,并且每一个东西都是有一定的规律的,只要你自己能钻研,我想没有说明难处的
注:转自VC狗编程网( 更多资料)