对于mfc的添加热键的文章已经有很多了,我这里就简单的说一下并且说一些可能出的错误

首先在资源文件中添加ACCELERATOR
然后在资源文件下的RC中找到ACCELERATOR的节点,打开后可以发现一个IDR_ACCELERATOR1
打开IDR_ACCELERATOR1,按tab键切换到选择ID列表,这里是选择你要添加哪个控件为快捷键,
然后在切换到修饰符,这里是选择你是否要使用组合键,如CTRL,CTRL+SHIFT,等等
然后在切换到键列表,这里选择你要添加的快捷键,也可以自行输入按键字符,按键的ASCII码,或虚拟键值
在切换到类型,这里是选择你的快捷键是使用ASCII模式还是vk模式
全部设置完成后保存,然后去对话框头文件中建立一个成员变量
HACCEL hotkeytab;
这里hotkeytab是变量名
添加玩成之后,去相应的对话框的CPP文件中的OnInitDialog函数中添加
hotkeytab = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
IDR_ACCELERATOR1为热键ID,
添加完成之后,进入类视图,找到对话框所对应的类,打开类向导,选项卡切换到虚函数,在虚函数列表中找到PreTranslateMessage
然后点击添加函数,
在点击编辑代码
进入代码编辑后在函数中添加如下代码
if (WM_KEYFIRST <= pMsg->message&&pMsg->message <= WM_KEYLAST) {
HACCEL hAccel = hotkeytab;
if (hAccel && TranslateAccelerator(m_hWnd, hAccel, pMsg)) {
return TRUE;
}
}
之后,运行程序,试一试你添加的快捷键吧!

注意事项:
在头文件中添加的热键变量一定要是成员变量
一定要在相应对话框下的OnInitDialog中加载热键
一定要在相应的对话框类中重载PreTranslateMessage函数,,我之前添加玩之后发现编译总是通不过,说是hotkeytab是未定义和未声明的标识符,起初没有注意到虚函数的问题,后来才偶然发现重载函数重载成其他类的了。

提示:如果要添加更多的快捷键,按照上述过程在添加一遍即可,但在PreTranslateMessage函数中只需做一些改动。如我创建了另一个快捷键变量HACCEL hotkeycancel;
在PreTranslateMessage函数中只需要改为:
if (WM_KEYFIRST <= pMsg->message&&pMsg->message <= WM_KEYLAST) {
HACCEL hAccel = hotkeytab;
HACCEL haccelcancel=hotkeycancel;
if (hAccel && TranslateAccelerator(m_hWnd, hAccel, pMsg)) {
return TRUE;
}
if (hotkeycancel && TranslateAccelerator(m_hWnd, hotkeycancel, pMsg)) {
return TRUE;
}
}

注:由于本人是个盲人的缘故,一些操作方式可能更适合盲人群体,有什么描述不详的地方敬请见谅!!!

关于mfc添加热键的更多相关文章

  1. MFC 添加C++类,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数;

    MFC 添加C++类,不用定义C++类的对象,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数: 1先在mfc程序中添加普通类CProdata,然后删除头文件Prodata.h里面 ...

  2. MFC添加自定义消息

    由于MFC中无法通过类向导来自定义消息,所以需要手动添加,主要过程如下: 本文基于vs2008下通过线程实现数据实时更新的对话框运用程序 1. 定义消息(Resource.h文件中): 由于很多新控件 ...

  3. VS MFC 添加菜单

    新建出来的基于对话框的MFC工程是没有菜单的,如何在对话框中添加菜单?又如何给菜单的菜单项添加事件应用响应?下面小编来具体描述一下,希望能帮助到一些人. 工具/原料   电脑一台 VS2010 方法/ ...

  4. MFC 添加文件路径 遍历文件

    .添加MFC选择文件路径,使用MessageBox显示信息. void CMyCalLawsDlg::OnBnClickedAddfolder() { wchar_t* p; wchar_t szPa ...

  5. MFC添加鼠标相应事件

    Class View (类视图)窗口中选中 你要添加事件的类(比如C***View.CPP),切换到properties窗口. 点击上面的Message图标(在Event图标[一个闪电形状的图标] 右 ...

  6. mfc添加气球式提示栏

    //    TOOLTIPWND.H  添加气球式提示栏 #if !defined(AFX_TOOLTIPWND_H__2C52D3E4_2F5B_11D2_8FC9_000000000000__IN ...

  7. MFC添加背景图片三种方法

    方法一: 1.声明成员变量CBrush m_brush;2.在InitDialog中添加代码: ? CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1);  //IDB_B ...

  8. C++添加热键和捕获组合键

    一.热键注册 步骤一:声明一个全局量int hotkeyId=1: 步骤二:窗体创建的时候注册: int result= RegisterHotKey(this->GetHWND(), hotk ...

  9. MFC 添加背景图片并让控件背景透明

    /*添加背景图片*/ BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialog::OnEraseBkg ...

随机推荐

  1. BBS+Blog项目流程及补充知识点

    项目流程: 1. 产品需求 (1)基于用户认证组件和Ajax实现登陆验证(图片验证码) (2)基于forms组件和Ajax实现注册功能 (3)设计系统首页(文章列表渲染) (4)设计个人站点页面 (5 ...

  2. 2018/2/17 SpringCloud的一个简单小介绍

    在学习SpringCloud之前,我以为SpringCloud是与Double一样,只是个单纯的RPC框架.但在今天的学习中,我发现并非如此,事实上,SpringCloud是多个框架的集合,感觉Spr ...

  3. 【git】Git 提示fatal: remote origin already exists 错误解决办法

    今天使用git 添加远程github仓库的时候提示错误:fatal: remote origin already exists. 最后找到解决办法如下: 1.先删除远程 Git 仓库 $ git re ...

  4. 用jQuery向div中添加Html文本内容

    前台代码: <link href="http://www.cnblogs.com/Content/themes/base/jquery-ui.css" rel="s ...

  5. poj - 2195 Going Home (费用流 || 最佳匹配)

    http://poj.org/problem?id=2195 对km算法不理解,模板用的也不好. 下面是大神的解释. KM算法的要点是在相等子图中寻找完备匹配,其正确性的基石是:任何一个匹配的权值之和 ...

  6. http转https

    1.先用jdk生成证书 先跳转到jdk的bin目录下:E:\Program Files\Java\jdk1.8.0_91\bin>keytool -genkey -alias tomcat -k ...

  7. JSP操作

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/actions.html: JSP操作(Action)使用XML语法结构来控制Servlet引擎的行为.可 ...

  8. JAVA WEB接口开发简述

    目录 1. JAVA WEB接口开发简述 1.1. 基本了解 1.2. 提供接口 1.3. 调用接口 1. JAVA WEB接口开发简述 1.1. 基本了解 当我们想去访问其他网站的接口时候,而又不想 ...

  9. json序列化后的是字符串,不是二进制。是字符串!!!确定不是二进制!!!

    1.现有一个自定义对象需要储存到sql数据库中去.这个对象里面属性很多,甚至包含一些元素量打到几十万的List集合属性.本人试着使用JSON序列化这个对象,储存到数据库,报maxjsonlength超 ...

  10. CentOS系统下Hadoop、Hbase、Zookeeper安装配置

    近期给一个项目搭建linux下的大数据处理环境,系统是CentOS 6.3.主要是配置JDK.安装Tomcat,Hadoop.HBase和Zookeeper软件.博主在Hadoop这方面也是新手.配置 ...