对于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. 杜教筛--51nod1239 欧拉函数之和

    求$\sum_{i=1}^{n}\varphi (i)$,$n\leqslant 1e10$. 这里先把杜教筛的一般套路贴一下: 要求$S(n)=\sum_{i=1}^{n}f(i)$,而现在有一数论 ...

  2. 【转】Intellij IDEA 快捷键大全

    IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Sh ...

  3. Inversion 归并求逆元

    bobo has a sequence a 1,a 2,…,a n. He is allowed to swap twoadjacent numbers for no more than k time ...

  4. SQLSERVER数据库管理员的专用连接DAC

    出处: http://www.cnblogs.com/lyhabc/archive/2012/09/23/2698702.html DAC:Dedicated Admin Connection 当SQ ...

  5. Layui动画、按钮、表单

    Layui动画.按钮.表单 在实用价值的前提之下,我们并没有内置过多花俏的动画.而他们同样在 layui 的许多交互元素中,发挥着重要的作用.layui 的动画全部采用 CSS3,因此不支持ie8和部 ...

  6. Swap Nodes in Pairs(链表操作)

    Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...

  7. ViewFlipper实现ViewPager的页面切换效果

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  8. Linux学习系列之memcached

    memcached简介 一.memcached是什么 memcached是一个开源的.支持高性能.高并发的分布式内存缓存系统 mem+cache+daemon:分布式内存缓存守护进程 memcache ...

  9. Js、Jquery对goTop功能的实现

    本文介绍用原生JS和Jquery分别实现的网页goTopbutton功能,以及在这个过程中碰到的问题. 终于实现的效果类似:http://sc2.163.com/home(注意右下角的top) 代码: ...

  10. 使用fiddler将网站上的css js重定向至本地文件

    使用fiddler将网站上的css js重定向至本地文件,进行在线调试 https://github.com/annnhan/ReRes 1条回复 这是一篇写给公司负责切图和调样式的前端的文章.主要适 ...