博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC注册热键
阅读量:5096 次
发布时间:2019-06-13

本文共 1036 字,大约阅读时间需要 3 分钟。

注册热键. 当用户点击注册的快捷键时,做出相应的响应.

定义 ALT+M键为测量按钮响应函数:

  1. 头文件中定义:
#define ID_HOTKEY1    10001
  1. 在初始化函数中加入注册热键函数:
if(false == RegisterHotKey(this->GetSafeHwnd(),ID_HOTKEY1,MOD_ALT,'M')  )    //VK_F1:F1响应    {        AfxMessageBox("遥控器注册热键失败!");    }
  1. 重写对话框中响应热键的消息: 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)
  1. 在析构函数中编写解除热键响应
UnregisterHotKey(this->GetSafeHwnd(), ID_HOTKEY1);

这里,我是手动注册的WM_HOTKEY消息响应函数,所以传参和不一样. 如果你是使用类向导创建消息响应,那么你的响应函数为:

void CMFC_TESTDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2){    //nHotKeyId 和 ID_HOTKEY1 相对应     //nKey2 和 'M'对应    //多个对应是为了响应你可能需要多个组合快捷键}

另外可参考下面这篇文章:

转载于:https://www.cnblogs.com/skyhuangdan/p/5522819.html

你可能感兴趣的文章
Screening technology proved cost effective deal
查看>>
mysql8.0.13下载与安装图文教程
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
Kotlin动态图
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
Hmailserver搭建邮件服务器
查看>>