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) 效果图
';