Hot Key控件通常用来捕获热键,例如快捷键设置
一、函数
1.1CHotKeyCtrl控件
void SetHotKey( WORD wVirtualKeyCode, WORD wModifiers );1.2获取热键数据
DWORD GetHotKey( ) const;void GetHotKey( WORD &wVirtualKeyCode, WORD &wModifiers ) const;
1.3注册系统热键
RegisterHotKeyThe RegisterHotKey function defines a system-wide hot key.
BOOL RegisterHotKey(
HWND hWnd, // window to receive hot-key notification
int id, // identifier of hot key
UINT fsModifiers, // key-modifier flags,键值修改标志
UINT vk // virtual-key code
);
1.4响应热键事件
GetParentWM_HOTKEY
二、使用方法
2.1获取并注册键值
//获取热键值
CHotKeyCtrl* p = (CHotKeyCtrl*)GetDlgItem(IDC_HOTKEY1);
WORD vkey, fsmoderfiers;
p->GetHotKey(vkey, fsmoderfiers);
//注册热键 句柄,ID(int),模式,键值
RegisterHotKey(m_hWnd, 111, fsmoderfiers, vkey);//成功,返回1,失败,返回0
ps:建议使用CTRL+来注册热键。
2.2注册热键功能
在hotkey所在的Dialog类中:即类视图,相应的Dialog类选中,右键->属性->消息->WM_HOTKEY-><ADD>OnHotKey
void CSliderCtlDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
static bool flag=true;
switch (nHotKeyId)//nHotKeyId即为RegisterHotKey中注册的ID号,唯一
{
case 111://相应热键的功能
ShowWindow(flag);//例如:显示当前窗口
flag = !flag;
break;
default:
break;
}
CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2);
}
2.3取消注册
UnregisterHotKey(GetSafeHwnd(),111);这个函数一般放在窗口关闭的时候,即WM_DESTORY消息中。