MFC注册热键
注册热键. 当用户点击注册的快捷键时,做出相应的响应.
定义 ALT+M键为测量按钮响应函数:
- 头文件中定义:
#define ID_HOTKEY1 10001
- 在初始化函数中加入注册热键函数:
if(false == RegisterHotKey(this->GetSafeHwnd(),ID_HOTKEY1,MOD_ALT,'M') ) //VK_F1:F1响应
{
AfxMessageBox("遥控器注册热键失败!");
}
- 重写对话框中响应热键的消息: WM_HOTKEY
LRESULT AutoTrackerDlg::OnHotKey( WPARAM wParam,LPARAM lParam )
{
UINT Mod = (UINT) LOWORD(lParam); // key-modifier flags
UINT uVirtKey = (UINT) HIWORD(lParam); // virtual-key code
//判断响应了什么热键
if (MOD_ALT == Mod && 'M' == uVirtKey)
{
//AfxMessageBox(_T("你按下了热键"));
OnBnClickedButtonMeasure();
}
return 0;
}
其中除了去重载消息外,还可以自己数响应WM_HOTKEY按钮,在BEGIN_MESSAGE_MAP中加入:
ON_MESSAGE(WM_HOTKEY,OnHotKey)
- 在析构函数中编写解除热键响应
UnregisterHotKey(this->GetSafeHwnd(), ID_HOTKEY1);
这里,我是手动注册的WM_HOTKEY消息响应函数,所以传参和不一样. 如果你是使用类向导创建消息响应,那么你的响应函数为:
void CMFC_TESTDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
//nHotKeyId 和 ID_HOTKEY1 相对应
//nKey2 和 'M'对应
//多个对应是为了响应你可能需要多个组合快捷键
}
另外可参考下面这篇文章:
MFC注册热键的更多相关文章
- RegisterHotKey注册热键,然后响应WM_HOTKEY消息
MSDN中的一个示例代码,步骤就是RegisterHotKey注册热键,然后响应WM_HOTKEY消息 @1:这个是系统热键 #include "stdafx.h" int _cd ...
- delphi注册热键方法(一)
uses windows,menus; ..... //声明 HotKey_Key: Word; HotKey_Shift: Word; procedure WMHotKey(var msg : Tm ...
- 【WinForm程序】注册热键快捷键切换
重写DefWndProc事件 #region Window 消息捕获 const int WM_COPYDATA = 0x004A; public struct COPYDATASTRUCT { pu ...
- WPF注册热键后处理热键消息(非winform方式)
由于最近在做wpf版的截图软件,在处理全局热键的时候,发现国内博客使用的都是winform窗体的键盘处理方式,此方式需要使用winform的动态库,如此不协调的代码让我开始在github中寻找相关代码 ...
- WinForm和WPF中注册热键
由于.Net没有提供专门的类库处理热键,所以需要直接调用windows API来解决. HotKey为.NET调用Windows API的封装代码,主要是RegisterHotKey和Unregist ...
- qt 注册热键
原文 将所需的库添加到您的qmake项目(.PRO文件) LIBS += \ -lUser32 2.在代码中包含所需的头文件. #include <windows.h> 在程序开始时注册热 ...
- MFC 给对话框注册热键
在头文件中添加: //}}AFX_MSGafx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);//(此行为加入的)BEGIN_MESSAGE_MA ...
- MFC注册窗口类以及FindWindow按窗口类名查询
很多玩游戏的人都知道一般游戏客户端程序是不允许双开的,就是说在同一游戏在启动的时候,是无法打开多个窗口.很多其他软件如酷狗播放器等也是这样.如果把打开的窗口最小化,这时重新启动程序,最小化的窗口会被显 ...
- MFC注册表操作
注册表简介 有时程序中要存些设置信息,一个方法就是创建一些普通的txt或xml文件,然后保存进去就行了.另一办法就是保存到注册表里.注册表是由windows维护的一个小数据库.里面也会保存window ...
随机推荐
- NX二次开发-UFUN将目录与文件名组合在一起uc4575
NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_cfi.h> UF_initialize() ...
- hdu多校第七场 1011 (hdu6656) Kejin Player 概率dp
题意: 一个游戏,有许多关,到下一关要花费金钱,做出尝试,有概率成功,若成功则到达下一关,若失败则停在此关或退回到前面某关,询问第l关到第r关的期望费用 题解: 显然,第r关到第l关的费用是dp[r] ...
- Qt5编译使用QFtp
使用 QNetworkAccessManager 可以实现 Ftp 的上传/下载功能(参考:Qt之FTP上传/下载),但有些原本 QFtp 有的功能 QNetworkAccessManager 却没有 ...
- 注意:阿里Druid连接池监控的两个坑
阿里的Druid大家都知道是最好的连接池,其强大的监控功能是我们追求的重要特性.但在实际情况中也有不少坑,说下最近遇到的一个坑吧! 问题1:不断打印error级别的错误日志 session ip ch ...
- 干货:Java正确获取客户端真实IP方法整理
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- Appium 环境配置遇到的坑
一般基础的python路径,sdk等网上都有教程,在这里不多说. 一般可能没有的包:opencv4nodejs ,ffmpeg,bundletoo,jar 1.opencv4nodejs 使用npm安 ...
- Unity中FSM有限状态机
什么是FSM FSM 即有限状态机,它是一个状态管理系统,表示一个对象的几种状态在指定条件下转移行为,即随着条件的不断改变内部状态不断地切换. FSM用处或者使用背景 通常使用FSM去实现一些简单的A ...
- FlyMcu下载时的问题
引用:http://www.openedv.com/forum.php?mod=viewthread&tid=69398&page=1#pid396135 和楼下李智鹏用普中科技的ST ...
- 在普通类中获取Spring管理的bean
1.在项目中添加下面的类: import org.springframework.context.ApplicationContext; import org.springframework.cont ...
- 错误Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream排查思路
spark1(默认CDH自带版本)不存在这个问题,主要是升级了spark2(CDHparcel升级)版本安装后需要依赖到spark1的旧配置去读取hadoop集群的依赖包. 1./etc/spark2 ...