HWND hWnd , //指定接收WM_HOTKEY消息的窗体句柄
int id, //热键标识,同一调用线程内的不同热键标识不能相同,应用程序中的标识值在0x0000和0xbfff之间,DLL中的在0xc000和0xffff之间
UINT fsModifiers,//下列值的组合:MOD_ALT,MOD_CONTROL,MOD_SHIFT,MOD_WIN,MOD_KEYUP
UINT vk //按键的虚拟码
)
//在初始化的时候注册:
RegisterHotKey(m_hWnd,1688,MOD_SHIFT|MOD_CONTROL,‘A‘)
RegisterHotKey(m_hWnd,2688,MOD_SHIFT|MOD_CONTROL,‘a‘)
//表示按下Shift+Ctrl+A和Shift+Ctrl+a
BOOL UnregisterHotKey(HWND hWnd, int id)
//添加WM_DESTROY消息时注销热键
{
CDialog::OnDestroy()
// TODO: Add your message handler code here
UnregisterHotKey(m_hWnd,1688)
UnregisterHotKey(m_hWnd,2688)
}
//添加消息函数
afx_msg LRESULT OnHotHey(WPARAM wParam,LPARAM lParam)
//实现
CWndsnapDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
if(wParam==1688||wParam=2688)
{
CDialog a
a.DoModal()
}
if()
{
CDialog b
b.DoModal()
}
//...
}
有一组API专门用于实现热键 RegisterHotKeyif (RegisterHotKey(this->GetSafeHwnd(),0,MOD_CONTROL | MOD_ALT,VK_F1) &&
RegisterHotKey(this->GetSafeHwnd(),1,MOD_CONTROL | MOD_ALT,VK_F2))
{
MessageBox("注册热键成功!")
}
else
{
MessageBox("注册热键失败!")
}
销毁热键用
if (UnregisterHotKey(this->GetSafeHwnd(),0) &&
UnregisterHotKey(this->GetSafeHwnd(),1))
{
MessageBox("卸载热键成功!")
}
else
{
MessageBox("卸载热键失败!")
}
这种方法设置热键需要处理消息 WM_HOTKEY
ON_MESSAGE(WM_HOTKEY,OnHotKey)
消息处理函数
LRESULT CHotKeyDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
if (wParam == 0)
{
MessageBox("Ctrl + Alt + F1 被按下")
}
else
{
MessageBox("Ctrl + Alt + F2 被按下")
}
return 1
}
具体参数你可以通过MSDN或者网上查下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)