1. 首先创建一个菜单,ID分别为IDM_FILE_NEW,IDM_FILE_OPEN,IDM_FILE_CLOSE。

  2. 分别对菜单各项进行响应。

  3. 在OnInitDialog()中,添加标题栏菜单:

    HMENU hMenu = ::LoadMenu(::GetModuleHandle(nullptr), MAKEINTRESOURCE(IDR_MENU1)); ::SetMenu(this->GetSafeHwnd(), hMenu);

  4. 创建一个Accelerator资源,添加如下内容:

    ID               Modifier        Key        Type

    IDM_FILE_NEW        None           ^N         ASCII

    IDM_FILE_OPEN       None          VK_BACK     VIRTKEY

    IDM_FILE_CLOSE      None           ^E         ASCII

    这样,就把键盘加速键和菜单各个选项联系在一起了。接下来,就要加载一下Accelerator资源文件。

  5. 在OnInitDialog()中,加载资源文件IDR_ACCELERATOR:

    m_hAccelerator = ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR));

    注:private:

HACCEL m_hAccelerator;

7.重载虚函数PreTranslateMessage():

BOOL CAcceleratorDemoDlg::PreTranslateMessage(MSG* pMsg)

{

// TODO: Add your specialized code here and/or call the base class

if (m_hAccelerator)

{

if (::TranslateAccelerator(this->GetSafeHwnd(), m_hAccelerator, pMsg))

return TRUE;

}

return CDialogEx::PreTranslateMessage(pMsg);

}

经过以上步骤,便实现了菜单键盘加速键。

转载于:https://blog.51cto.com/whatever957/1623443

mfc使用键盘加速键相关推荐

  1. 10.3 键盘加速键

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

  2. 非框架窗口键盘加速键的使用

    在设计应用程序菜单时,可以选择使用键盘加速键给任意或者全部菜单项分配快捷键,加速键也会引发WM_COMMAND消息. 第一步,是要创建一个加速键表(特殊的资源).具体方法是,在资源列表视图里面,添加加 ...

  3. MFC绘制键盘控制动画

    MFC绘制键盘控制动画 参考孔令德老师的<计算几何算法与实现> 使用双缓冲机制绘制中心位于窗口客户区中心的立方体线框模型,可以使用键盘上的方向键旋转立方体. 1.创建MFC单文档项目: 2 ...

  4. MFC之键盘和键盘消息处理

    今天学习了最基本的MFC操作,键盘及键盘消息函数,跟着书中的内容自己编了个小程序.检测用户是否同时按下SHIFT和B键 第一步:先是建了一个单文档模式的MFC程序,添加了键盘消息及处理函数.键盘消息处 ...

  5. MFC获取键盘光标和鼠标光标所在控件的ID

    键盘光标:     CWnd *pWnd = GetFocus();     if (pWnd == NULL)      ;//no focus      else      nID = pWnd- ...

  6. 技法:对你的应用添加键盘加速键

    对IsDialogMessage的误解 有一个API函数可能经常容易造成误解,它就是IsDialogMessage.IsDialogMessage将会判断一个消息是否是针对指定对话框的消息,如果是的话 ...

  7. 关于VS2010中键盘加速键无效的问题

    / // // Accelerator //IDR_ACCELERATOR ACCELERATORS BEGINVK_F2, IDM_NEW, VIRTKEY, NOINVERT END 在资源中添加 ...

  8. 【EasyUse】关于键盘加速键的几点思考

    因为EasyUse程序要用到键盘加速,中间遇到了一些难题.汇总以便以后使用. 1.该在哪个地方截取消息(?) 关于这问题,认识还不够深刻.有一点可以确定,你在程序运行的CXXApp和CXXDlg的Pr ...

  9. 加载自己的键盘加速键

    // TODO: 在此添加专用代码和/或调用基类 //1.加载加速键表 HINSTANCE hInst=AfxGetResourceHandle(); LPCTSTR lpID=MAKEINTRESO ...

最新文章

  1. text-overflow
  2. 云炬Android开发笔记 17商品详情功能开发
  3. [vue] vue怎么改变插入模板的分隔符?
  4. OpenBSD之网络配置
  5. Python实现FP树
  6. NUnit 入门知识
  7. 安装rpm 树莓派4_树莓派3上安装使用centos 7.4
  8. 我是小小志愿者——国际志愿者日线上宣传活动
  9. 数据平台建设的痛点,如何进行元数据治理?
  10. FusionCharts参数及功能特性详解(二)
  11. graphite http api
  12. 深度神经网络 英语,深度神经网络英文
  13. 大蕉毕业三周年了,有话对你说 No.103
  14. c/c++位操作简介--移位、位与、位或、异或
  15. Pytorch读取Mxnet的rec格式数据
  16. 可视化 | 教你用Python实现热力图(二)
  17. 对随机过程的简单理解
  18. 双智机器人 珠海_格力“双智多元化”成果显著 珠洽会展示核心科技
  19. 阿里云服务器安装配置流程
  20. 计算机内存不足建议使用64,电脑内存不足的解决方法

热门文章

  1. 威猛的 90 后,不等领导下班就先走,《2021 年轻人下班报告》公布
  2. Google天气和股票API
  3. 联想Y400怎么样在插入鼠标时自动禁用触摸板
  4. P2P流媒体开源项目汇总与简述
  5. CODESYS自动化仿真软件如何与EtherNet IP工业RID读写器|读卡器CK-RF102AN-E01联机工作
  6. PTA 程序设计天梯赛【day2】
  7. JS逆向-请求参数验证(案例:七麦数据)
  8. 浅谈安科瑞电能预付费系统在大电力客户中的设计及应用分析
  9. html5手机拍照上传
  10. 【智能合约】Go语言调用智能合约 | geth