如题所述
第1个回答 2015-09-01
BOOL RegisterHotKey(
HWND hWnd, // handle to window
int id, // hot key identifier
UINT fsModifiers, // key-modifier options
UINT vk // virtual-key code); 说明: 第一个参数指定接收WM_HOTKEY消息的窗体句柄
第二个参数热键标识,代表这个热键的唯一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,也是唯一的))
{
MessageBox("Test is 成功");
}
break;
}
default: //默认的处理
break;
}
return CDialog::PreTranslateMessage(pMsg);} 剩下的工作就是反注册热键(意思就是注销这个热键),在程序关闭的时候写入下列代码,我是在OnClose中写的 ,你也可以在OnDestroy中写,
UnregisterHotKey(m_hWnd,(注册时的ID)); //这个函数也是个API函数,第一个参数是说明你要注销哪个窗口句柄的热键,第二个参数说明是你开始注册的唯一ID
其实不管是你做任何事情,都要遵循一个顺序,一般都是有一定的规律的,操作系统即使这样复杂,但是里面的东西还是一点点拼凑起来的,并且每一个东西都是有一定的规律的,只要你自己能钻研,我想没有说明难处的来源:VC狗编程网追问
HWND hWnd, // handle to window
int id, // hot key identifier
UINT fsModifiers, // key-modifier options
UINT vk // virtual-key code); 说明: 第一个参数指定接收WM_HOTKEY消息的窗体句柄
第二个参数热键标识,代表这个热键的唯一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,也是唯一的))
{
MessageBox("Test is 成功");
}
break;
}
default: //默认的处理
break;
}
return CDialog::PreTranslateMessage(pMsg);} 剩下的工作就是反注册热键(意思就是注销这个热键),在程序关闭的时候写入下列代码,我是在OnClose中写的 ,你也可以在OnDestroy中写,
UnregisterHotKey(m_hWnd,(注册时的ID)); //这个函数也是个API函数,第一个参数是说明你要注销哪个窗口句柄的热键,第二个参数说明是你开始注册的唯一ID
其实不管是你做任何事情,都要遵循一个顺序,一般都是有一定的规律的,操作系统即使这样复杂,但是里面的东西还是一点点拼凑起来的,并且每一个东西都是有一定的规律的,只要你自己能钻研,我想没有说明难处的来源:VC狗编程网追问
回答没任何用处我就不说啥了, 你还给我搞个中英结合的代码........
第2个回答 2015-09-01
如果热键被注册过,那么你注册时 会报错的。追问
咋报错? 用GetLastError会返回几?
追答若为一热键定义的击键己被其他热键所定义,则RegisterHotKey函数调用失败。
返回值:若函数调用成功,返回一个非O值。若函数调用失败,则返回值为0。若要获得更多的错误信息,可以调用GetLastError函数。
那如果热键被占用了GetLastError会返回几?