热键(或称组合键),在一个软件中有时候是很必须的。我们可以通过自定义热键和响应的方式,隐藏一些不向用户开放的功能,以达到一些简单的控制和目的。
自定义一个热键,一般需要经过如下的基本步骤:
⑴ 为热键赋予一个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://box.kancloud.cn/2016-08-31_57c6b4a31bd1a.gif)
效果图
- 前言
- VC++中自定义热键及响应
- CFileDialog文件对话框
- VC++中客户区保存为BMP图片
- VC++读、写注册表
- VC++播放音频文件和音频数据的方法
- VC++调用Matlab编写的DLL(混合编程)
- VC++中文件读、写和其他相关操作汇总
- VC++获取系统当前时间
- VC++按钮控件字体设置
- VC++软件界面风格简单美化
- VC++中一些常用的数据类型之间的相互转化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及随机相关
- VC++中结构体的定义及使用
- VC++中List Control控件的使用方法介绍
- VC++中窗口过程函数及其消息发送、响应机制介绍
- VC++中Ribbon编程架构及SDI架构多视图切换介绍
- 串口通信基础知识及VC++实现
- VC++中单个键盘按键的响应
- VC++中的计时器及多媒体高精度计时器
- VC++编写DLL导出函数及其调用方法
- VC++对话框(CDialog)的全屏显示及控件居中显示
- VC++对话框(CDialog)添加背景图片
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- VC++对Access数据库的操作(查询、插入、更新、删除等)