VC++中自定义热键及响应
最后更新于:2022-04-01 20:34:24
热键(或称组合键),在一个软件中有时候是很必须的。我们可以通过自定义热键和响应的方式,隐藏一些不向用户开放的功能,以达到一些简单的控制和目的。
自定义一个热键,一般需要经过如下的基本步骤:
⑴ 为热键赋予一个ID;
⑵ 向系统注册该热键;
⑶ 定义消息响应函数;
⑷ 解除注册,释放资源。
下面结合实例来详细说明(**完整程序请到我的CSDN资源中下载:[http://download.csdn.net/detail/margin1988/3523748](http://download.csdn.net/detail/margin1988/3523748)**):
⑴ 在Point1Dlg.h文件中声明自定义热键的ID变量及消息响应函数:
~~~
//自定义热键
int m_nHotKeyID;//热键ID
afx_msg LONG OnHotKey(WPARAM wParam,LPARAM lParam);//自定义热键响应函数
~~~
⑵ 在Point1Dlg.cpp中完成上述四个基本步骤:
① 在BEGIN_MESSAGE_MAP(CPoint1Dlg,CDialog)
~~~
ON_MESSAGE(WM_HOTKEY,&CPoint1Dlg::OnHotKey)//热键响应消息映射宏
~~~
END_MESSAGE_MAP()之间,添加热键响应消息映射宏。
② 在OnInitDialog()函数中注册热键:
~~~
//向系统注册热键:ALT+0
m_nHotKeyID=0;//为热键赋予ID号
BOOL m_isKeyRegistered =RegisterHotKey(GetSafeHwnd(),m_nHotKeyID,MOD_ALT,VK_NUMPAD0);//向系统注册该热键
ASSERT(m_isKeyRegistered!= FALSE);
~~~
③ 添加热键消息响应函数:
~~~
LONG CPoint1Dlg::OnHotKey(WPARAM wParam,LPARAM lParam){
MessageBox(_T("您按下了ALT+0"));
return 0;
}
~~~
④ 在某函数中(自己选择或定义)解除注册、释放资源:
~~~
//解除注册,释放系统资源
BOOL m_iskeyUnregistered = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID);
if(m_iskeyUnregistered)
MessageBox(_T("解除注册、释放资源成功!"));
else
MessageBox(_T("解除注册、释放资源失败!"));
~~~
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-31_57c6b4a31bd1a.gif)
效果图
';