非框架窗口键盘加速键的使用
在设计应用程序菜单时,可以选择使用键盘加速键给任意或者全部菜单项分配快捷键,加速键也会引发WM_COMMAND消息。
第一步,是要创建一个加速键表(特殊的资源)。具体方法是,在资源列表视图里面,添加加速资源,然后根据所需要的条件给按键绑定相应的值,绑定完按键,记得回车,又生成下一个加速资源,继续绑定下一个需要的按键或者菜单项。
第二步,由于非框架窗口缺少CFrameWnd中对加速键的支持,所以要在派生类中添加一个HACCEL的数据成员:
HACCEL m_hAccel;
第三步,在初始化函数中,调用api函数::LoaderAccelerator加载加速键表。将 ::LoaderAccelerator返回的句柄复制到m_hAccel:
m_hAccel= ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
第四步,在窗口类中重载PreTranslateMessage。
BOOL CDlgCalcDlg::PreTranslateMessage(MSG* pMsg)
{if (m_hAccel != NULL)if (::TranslateAccelerator (m_hWnd, m_hAccel, pMsg))return TRUE;return CDialog::PreTranslateMessage (pMsg);
}
第五步,创建WM_COMMAND消息的处理函数
void function();
第六步,添加消息响应
ON_COMMAND(xxxBUTTON,fucntion);
非框架窗口键盘加速键的使用相关推荐
- 10.3 键盘加速键
摘录于<Windows程序(第5版,珍藏版).CHarles.Petzold 著>P373 键盘加速键是可以生成 WM_COMMAND(或者有时是 WM_SYSCOMMAND)消息的组合键 ...
- MFC 文档 视图 框架窗口间的关系 和消息传送规律
在MFC中引入了文档-视结构的概念,文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口.因此一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDoc ...
- [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口
原文:[WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 周银辉 现象: 大家可以试试下面这个很有趣但会带来Defect的现象:当我 ...
- MediaSource 非当前窗口
可以监听浏览器非当前窗口试试: 我会使用jQuery因为那样你所要做的就是: $(window).blur(function(){//your code here}); $(window).focus ...
- 设置WPF窗口相对于非WPF窗口的位置
在前一个Post当中,指出了在WPF的WindowInteropHelper类中的一个BUG:通过WindowInteropHelper的Owner属性不能实现把WPF窗口的Owner属性设置为一个非 ...
- 显示非模式窗口和模式窗口
varmodalLess:TForm; beginmodalLess := TForm.Create(Application);modalLess.Caption := '非模式窗口' ;modalL ...
- MFC模态窗口与非模态窗口
MFC模态窗口与非模态窗口 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年07月25日 模态窗口的意思是指主窗口在打开模态窗口后,没法再操作主窗口,这就是模态 ...
- html5-6 Frame框架窗口类型
html5-6 Frame框架窗口类型 一.总结 一句话总结: 1.点左侧的a链接如何打开右侧页面? <a href='user/index.html' target='right'>& ...
- Java知多少(81)框架窗口基础
窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...
最新文章
- 研究生穿实验服满校追羊跑... 因为这是在追奔跑的毕业论文,哈哈哈!
- 使用 acme.sh 获取网站证书并配置https访问
- oracle数据误操作恢复【flashback闪回操作】
- 远程连接linux服务器mysql
- shell 中定义数组
- 给Tomcat打开远程debug端口
- Mysql启动自己主动设置max_connections为其它值
- this.$modal.confirm 自定义按钮关闭_【勤哲资料】7.6 自定义打印
- boost正则库匹配ASII编码的中文、全角字符示例
- Java 虚拟机简介
- yota3无第三方recovery root方法
- 成就电子电路设计高手(二),EDA在电子电路设计中的应用
- 计算机硬盘的容量的最小,计算机硬盘容量大小怎么计算
- 迅雷 服务器响应异常,迅雷7经常崩溃无法正常使用的两大解决方法
- 日语语音识别_日语语音识别软件_日语语音识别在线 - 云+社区 - 腾讯云
- 史上最全:Jetbrains全家桶31款软件 分类+功能整理收集
- 易烊千玺成为罗莱家纺品牌代言人
- 主流搜索引擎蜘蛛的IP地址网段整理
- 互联网时代各行业都在快速更替,金融行业为什么即将成为下一个风口?
- mark mark mark
热门文章
- 半导体或芯片的90nm、65nm 、0.25um、0.18um、工艺指的是什么?
- a: link visited active hover的使用顺序
- c语言错误1004,excel宏运行时提示错误1004的三种解决方法
- android手机网速,简单一步让你的手机网速至少提升2倍!
- SpringBoot常见大坑
- 网站被劫持的方式,和检测方法
- 《仙剑奇侠传四》完全攻略
- 存储过程 编译错误:PLS-00103: Encountered the symbol TABLE when expecting one of the following:
- mysql 页和叶子页_Mysql —— 页与索引
- Android | 带你零代码实现安卓扫码功能