在设计应用程序菜单时,可以选择使用键盘加速键给任意或者全部菜单项分配快捷键,加速键也会引发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);
												

非框架窗口键盘加速键的使用相关推荐

  1. 10.3 键盘加速键

    摘录于<Windows程序(第5版,珍藏版).CHarles.Petzold 著>P373 键盘加速键是可以生成 WM_COMMAND(或者有时是 WM_SYSCOMMAND)消息的组合键 ...

  2. MFC 文档 视图 框架窗口间的关系 和消息传送规律

    在MFC中引入了文档-视结构的概念,文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口.因此一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDoc ...

  3. [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口

    原文:[WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 周银辉 现象: 大家可以试试下面这个很有趣但会带来Defect的现象:当我 ...

  4. MediaSource 非当前窗口

    可以监听浏览器非当前窗口试试: 我会使用jQuery因为那样你所要做的就是: $(window).blur(function(){//your code here}); $(window).focus ...

  5. 设置WPF窗口相对于非WPF窗口的位置

    在前一个Post当中,指出了在WPF的WindowInteropHelper类中的一个BUG:通过WindowInteropHelper的Owner属性不能实现把WPF窗口的Owner属性设置为一个非 ...

  6. 显示非模式窗口和模式窗口

    varmodalLess:TForm; beginmodalLess := TForm.Create(Application);modalLess.Caption := '非模式窗口' ;modalL ...

  7. MFC模态窗口与非模态窗口

    MFC模态窗口与非模态窗口 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年07月25日 模态窗口的意思是指主窗口在打开模态窗口后,没法再操作主窗口,这就是模态 ...

  8. html5-6 Frame框架窗口类型

    html5-6  Frame框架窗口类型 一.总结 一句话总结: 1.点左侧的a链接如何打开右侧页面? <a href='user/index.html' target='right'>& ...

  9. Java知多少(81)框架窗口基础

    窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...

最新文章

  1. 研究生穿实验服满校追羊跑... 因为这是在追奔跑的毕业论文,哈哈哈!
  2. 使用 acme.sh 获取网站证书并配置https访问
  3. oracle数据误操作恢复【flashback闪回操作】
  4. 远程连接linux服务器mysql
  5. shell 中定义数组
  6. 给Tomcat打开远程debug端口
  7. Mysql启动自己主动设置max_connections为其它值
  8. this.$modal.confirm 自定义按钮关闭_【勤哲资料】7.6 自定义打印
  9. boost正则库匹配ASII编码的中文、全角字符示例
  10. Java 虚拟机简介
  11. yota3无第三方recovery root方法
  12. 成就电子电路设计高手(二),EDA在电子电路设计中的应用
  13. 计算机硬盘的容量的最小,计算机硬盘容量大小怎么计算
  14. 迅雷 服务器响应异常,迅雷7经常崩溃无法正常使用的两大解决方法
  15. 日语语音识别_日语语音识别软件_日语语音识别在线 - 云+社区 - 腾讯云
  16. 史上最全:Jetbrains全家桶31款软件 分类+功能整理收集
  17. 易烊千玺成为罗莱家纺品牌代言人
  18. 主流搜索引擎蜘蛛的IP地址网段整理
  19. 互联网时代各行业都在快速更替,金融行业为什么即将成为下一个风口?
  20. mark mark mark

热门文章

  1. 半导体或芯片的90nm、65nm 、0.25um、0.18um、工艺指的是什么?
  2. a: link visited active hover的使用顺序
  3. c语言错误1004,excel宏运行时提示错误1004的三种解决方法
  4. android手机网速,简单一步让你的手机网速至少提升2倍!
  5. SpringBoot常见大坑
  6. 网站被劫持的方式,和检测方法
  7. 《仙剑奇侠传四》完全攻略
  8. 存储过程 编译错误:PLS-00103: Encountered the symbol TABLE when expecting one of the following:
  9. mysql 页和叶子页_Mysql —— 页与索引
  10. Android | 带你零代码实现安卓扫码功能