RegisterHotKey 热键的使用

简介:

简单的说就是全局快捷键,你的程序启动后注册热键到指定窗口,以后如果用户按下你注册的热键,你的指定窗口就会收到WM_HOTKEY消息通知,进而进行处理。

使用起来只有三个步骤:

1.注册热键

2.在WM_HOTKEY通知中进行逻辑处理

3.解除注册热键

API介绍:

(具体消息参数含义,详细介绍等可以去msdn官网查看https://msdn.microsoft.com/en-us/library/ms646309.aspx

注册热键

BOOL   RegisterHotKey( 
HWND   hWnd,         //响应该热键的窗口句柄,如果为空,则注册到调用线程上 
Int   id,                       //该热键的唯一标识 
UINT   fsModifiers,   //该热键的辅助按键 
UINT   vk                 //该热键的键值 
);   

解除注册热键

BOOL WINAPI UnregisterHotKey(
  _In_opt_ HWND hWnd,//热键注册的窗口
  _In_     int  id//要解除注册的热键ID
);

详细使用步骤:

新建一个基本对话框,直接完成

注册热键

BOOL CXXDlg::OnInitDialog()
{
......
......
RegisterHotKey(GetSafeHwnd(),WM_MYHOTKEY,MOD_CONTROL|MOD_ALT,'X');
//这里定义的快捷键是"Alt+Ctrl+X"
return true;
}

添加消息映射

(a)定义响应函数

在XXDlg.h中
class CXXDlg : public CDialog
{
.......
......
afx_msg HRESULT OnHotKey(WPARAM wParm,LPARAM lParam);
//这里使用函数OnHotKey,名字可随便改,但格式是固定的
DECLARE_MESSAGE_MAP()
}

(b)捆绑消息

在XXDlg.cpp中
BEGIN_MESSAGE_MAP(CXXDlg, CDialog)
ON_WM_SYSCOMMAND()
.......
.......
ON_MESSAGE(WM_HOTKEY,OnHotKey)
END_MESSAGE_MAP()
WM_HOTKEY是系统定义的热键消息,OnHotKey是所要调用的函数

编写响应函数

在XXDlg.cpp中最后添加
HRESULT CXXDlg::OnHotKey(WPARAM wParm,LPARAM lParam)
{
if (wParm==WM_MYHOTKEY)
{
CString str;
str.Format("ID:%d lParam:%08x  h:%x l:%x",
wParm,lParam,HIWORD(lParam),LOWORD(lParam));
AfxMessageBox(str);
}
return true;
}
//这里只是将一些信息显示处理,想干什么可以自己改

注销消息

使用类向导(MFC ClassWizard)添加DestroyWindow消息
添加函数
BOOL CXXDlg::DestroyWindow() 
{
UnregisterHotKey(GetSafeHwnd(),WM_MYHOTKEY);
return CDialog::DestroyWindow();
}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Barry__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值