牛骨文教育服务平台(让学习变的简单)

VC++中自定义热键及响应

热键(或称组合键),在一个软件中有时候是很必须的。我们可以通过自定义热键和响应的方式,隐藏一些不向用户开放的功能,以达到一些简单的控制和目的。

自定义一个热键,一般需要经过如下的基本步骤:

⑴ 为热键赋予一个ID;

⑵ 向系统注册该热键;

⑶ 定义消息响应函数;

⑷ 解除注册,释放资源。

下面结合实例来详细说明(完整程序请到我的CSDN资源中下载: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("解除注册、释放资源失败!"));

效果图