关于mfc添加热键
对于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添加热键的更多相关文章
- MFC 添加C++类,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数;
MFC 添加C++类,不用定义C++类的对象,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数: 1先在mfc程序中添加普通类CProdata,然后删除头文件Prodata.h里面 ...
- MFC添加自定义消息
由于MFC中无法通过类向导来自定义消息,所以需要手动添加,主要过程如下: 本文基于vs2008下通过线程实现数据实时更新的对话框运用程序 1. 定义消息(Resource.h文件中): 由于很多新控件 ...
- VS MFC 添加菜单
新建出来的基于对话框的MFC工程是没有菜单的,如何在对话框中添加菜单?又如何给菜单的菜单项添加事件应用响应?下面小编来具体描述一下,希望能帮助到一些人. 工具/原料 电脑一台 VS2010 方法/ ...
- MFC 添加文件路径 遍历文件
.添加MFC选择文件路径,使用MessageBox显示信息. void CMyCalLawsDlg::OnBnClickedAddfolder() { wchar_t* p; wchar_t szPa ...
- MFC添加鼠标相应事件
Class View (类视图)窗口中选中 你要添加事件的类(比如C***View.CPP),切换到properties窗口. 点击上面的Message图标(在Event图标[一个闪电形状的图标] 右 ...
- mfc添加气球式提示栏
// TOOLTIPWND.H 添加气球式提示栏 #if !defined(AFX_TOOLTIPWND_H__2C52D3E4_2F5B_11D2_8FC9_000000000000__IN ...
- MFC添加背景图片三种方法
方法一: 1.声明成员变量CBrush m_brush;2.在InitDialog中添加代码: ? CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); //IDB_B ...
- C++添加热键和捕获组合键
一.热键注册 步骤一:声明一个全局量int hotkeyId=1: 步骤二:窗体创建的时候注册: int result= RegisterHotKey(this->GetHWND(), hotk ...
- MFC 添加背景图片并让控件背景透明
/*添加背景图片*/ BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialog::OnEraseBkg ...
随机推荐
- hdu 1075 字典树
#include<stdio.h> #include<iostream> struct node { int num,i; node *a[27]; char s[20];// ...
- ie下php session不能用(域名的合法定义)
今天遇到了一个奇怪的问题.应用程序的后台ie下居然无法登陆,老是提示验证码不正确,明明输入是正确的.于是抓包.测试.调试,最终发现罪魁祸首phpsessionid在ie下没有办法写入.研究了一下,发现 ...
- 逆袭指数-——杭电校赛(dfs)
逆袭指数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- MongoDB学习day02--数据库增删改查
(window系统,在cmd命令提示符中使用) 一.数据库使用 管理mongodb数据库:mongo,连接本地数据库,或mongo 127.0.0.1:27017,连接其他服务器:mongo ip: ...
- MySQL JDBC URL参数(转)
MySQL的 JDBC URL格式: jdbc:mysql://[host][,failoverhost...][:port]/[database] » [?propertyName1][=prope ...
- easyui datagrid-detailview 嵌套高度自适应
实现效果 原因 异步加载,明细展开时,可能会遇到父列表不能自动适应子列表高度的变化 具体代码 $('#centerdatagrid').datagrid({ url:'${ctx}/offer/off ...
- centos下性能分析工具perf的安装和简单使用
1.安装: cat /etc/redhat-releaseCentOS release 6.6 (Final) sudo yum install perf 2.
- symfony 使用原始sql
$this->get('database_connection')->fetchAll('select * from book where book.id=3')
- centos 7 静态IP,指定DNS
cd /etc/sysconfig/network-scripts/ 找到对应的网卡,配置并编辑 ls -l vim ifcfg-em1 配置例子: TYPE="Ethernet" ...
- C#如何开发多语言支持的Winform程序
C# Winform项目多语言实现(支持简/繁/英三种语言)有很多种方案实现多语言,我在这里介绍一种最简单最容易理解的,作为教学材题应该从通俗易懂入手.在写这篇文章之前,本来想用枚举窗体对象成员的方式 ...