Visual C++——加速键

C++ 专栏收录该内容
1013 篇文章 6 订阅

基本概念

加速键:用户在键盘上按下了定义的加速键也将产生相应的命令消息。

什么是键盘加速键?加速键是产生WM_COMMAND消息(有些情况下是WM_SYSCOMMAND)的键组合。许多时候,程序使用加速键来重复常用菜单项的动作(然而,加速键还可以用于运行非菜单功能)。例如,许多Windows程序都有一个包含“Delete”或“Clear”选项的“Edit”菜单,这些程序习 惯上都将Del键指定为该选项的加速键。使用者可以通过“ Alt 键”从菜单中选择“ Delete ”选项,或者只需按下加速键 Del 。当窗口消息处理程序收到一个WM_COMMAND消息时,它不必确定使用的是菜单还是加速键。为什么要使用加速键? 您也许会问:为什么我应该使用加速键?为什么不能直接拦截WM_KEYDOWN或WM_CHAR消息而自己实现同样的菜单功能呢?好处又在哪里呢?对于一 个单窗口应用程序,您当然可以拦截键盘消息,但是使用加速键可以得到一些好处:您不需要把菜单和加速键的处理方式重写一遍。对于有多个窗口和多个窗口消息处理程序的应用程序来说,加速键是非常重要的。正如我们所看到的,Windows将键盘消息发送给目前活动窗口的窗口 消息处理程序。然而对于加速键, Windows把WM_COMMAND消息发送给窗口消息处理程序,该窗口消息处理程序的代号在Windows函数 TranslateAccelerator中给出。通常这是主窗口,也是拥有菜单的窗口,这意味着无须每个窗口消息处理程序都把加速键的操作处理程序重写 一遍。如果您在主窗口的显示区域中,使用了非系统模态对话框(在下一章中会讨论)或者子窗口,那么这种好处就变得非常重要。如果定义一个特定的加速键以便 在不同的窗口之间移动,那么,只需要一个窗口消息处理程序有这个处理程序。

1、在资源描述文件中定义加速键资源

加速键名 ACCELERATORS 

加速键标识(ID),

[类型 ]

[NOINVERT]  //使用加速键时,菜单项不高亮显示

[ALT][SHIFT][CONTROL] //组合键的组合方式

常用的加速键有两种形式:

①“^char”,id

例如:“文件”菜单中“保存”项的加速键可定义为:

         “^S” , IDM_SAVE

②nCode, id VIRTKEY

使用虚拟键作为加速键。

例如将F1键定义为“帮助”菜单项的加速键,其ID标识为IDM_HELP,其形式如下:

          VK_F1,IDM_HELP,VIRTKEY

2、加载加速键资源

调用函数LoadAccelerators加载加速键资源:

…
HACCEL hAccel;
…
hAccel=LoadAccelerators
(
 hInstance,  // 当前程序实例句柄
 lpAcceIName  // lpAccelName为加速键表名
);

3、翻译加速键

翻译操作经常在应用程序的消息循环中进行:

while(GetMessage(&Msg,NULL,0,0)){ 
    if(!TranslateAccelerator(hwnd,hAccel,&Mag)){  
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
}

函数TranslateAccelerator是翻译操作的核心。其特点是将翻译后的消息直接发往窗口,不在消息队列中等待。

参考文章

https://zhidao.baidu.com/question/1753994495707065988.html 

http://www.360doc.com/content/11/0328/16/4539198_105361115.shtml

http://blog.sina.com.cn/s/blog_45eaa01a0102xcx3.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

目录第1篇 开发基础篇 第1章 VisualC++6.0开发环境 1.1 VisualC++6.0概述 1.2 认识VisualC++集成开发环境 1.3 IDE菜单栏介绍 1.4 工具栏 1.5 输出窗口 1.6 资源编辑器 1.7 VisualC++学习常见问题 1.8 VisualC++学习方法简介 小结 第2章 利用集成开发环境生成程序 2.1 生成项目(project) 2.2 添加和编辑源文件 2.3 建立程序 2.4 运行程序 2.5 调试程序 2,6VisualC+4.生成的项目文件 2.7 编写控制台应用程序 小结 第3章 Windows程序运行原理 3.1 图形界面操作系统的王者——Windows 3.2 什么是多任务操作系统 3.3 Windows应用程序的组成 3.4 建立API的概念 3.4.1 API的发展 3.4.2 标准Win32API函数分类 3.5 一个用API编写的Windows程序 3.6 VisualC++应用程序开发框架:MFC 3.6.1 从API到MFC 3.6.2 MFC是一个编程框架 小结 第4章 开始使用MFC类库 4.1 MFC的起源和发展 4.2 MFC整体类库结构 4.3 常用MFC类简介 4.3.1 应用程序结构类 4.3.2 调试和异常类 4.3.3 文件服务类 4.3.4 图形处理类 4.3 ,5数据库类 4.3.6 Internet支持类 4.4 一个简单的MFC程序 4.5 文档/视图结构 4.5.1 文档类 4.5.2 视图类 4.5.3 使用文档/视图结构的好处 4.5.4 单文档(SDI)与多文档(MDI)应用程序 4.6 窗口类及其控件栏 4.6.1 子窗口类 4.6.2 主窗口类 4.6.3 工具栏 4.6.4 状态栏 4.7 MFC创建的完整应用程序实例 小结 第5章 菜单与加速 5.1 消息与事件 5.1.1 事件驱动机制 5.1.2 消息和消息映射 5.1.3 消息处理过程 5.2 菜单和加速的创建 5.2.1 菜单的创建 5.2.2 加速的创建 5.3 添加菜单所需的处理函数 5.3.1 添加普通菜单的处理函数 5.3.2 添加弹出式菜单的处理函数 5.4 加载加速 小结 第6章 AppWizand和ClassWizard 6.1 一个简单应用程序的创建 6.1.1 MFCAppWizard 6.1.2 ClassWizard 6.1.3 程序实例 6.2 程序调试 6.2.1 创建调试实例程序 6.2.2 调试器 小结 第7章 在WindOWS中绘制图像 7.1 绘图的基础知识 7.1.1 映射模式 7.1.2 设备上下文 7.2 图形设备接口(GDI) 7.2.1 设备环境类(CDC) 7.2.2 GDI对象 7.3 简单图形的绘制 7.3.1 屏幕绘图的主要函数 7.3.2 图形绘制基本原则 7.3.3 画笔 7.3.4 画刷 小结 第2篇 关控件篇(MFC) 第8章 常用界面控件 8.1 静态文本(staticText)控件 8.1.1 传统控件通知消息 8.1.2 静态控件的使用 8.1.3 CStatic类的主要成员函数 8.2 文本编辑(EditBox)控件 8.2.1 文本编辑控件的使用 8.2.2 CEdit类的主要成员函数 8.3 滚动条(ScroUBar)控件 8.3.1 滚动条控件的使用 8.3.2 CScrollBar类的主要成员函数 8.4 按钮控件 8.4.1 按钮控件的使用 8.4.2 CButton类的主要成员函数 8.5 列表框(List:Box)控件 8.5.1 列表框控件的使用 8.5.2 ClistBox类的主要成员函数 8.6 组合框(Combobox)控件 8.7 图片(Picture)控件 8.8 列表(ListCtrl)控件 8.8.1 Win32新型控件概述 8.8.2 列表控件的使用 8.8.3 ClistCtrl类的主要成员函数 8.9 树形(TreeCtrl)控件 8.9.1 树形控件的使用 8.9.2 CTreeCtrl类的主要成员函数 8.9.3 树形控件的通知消息 8.10 项卡(TabCtrl)控件 8.10.1 选项卡控件的使用 8.10.2 选项卡控件通知消息 8.10.3 选项卡控件的使用 8.11 用实例:进制转换计算器 8.11.1 进制转换计算器功能概述 8.11.2 实例具体实现步骤 小结 第9章 文本和字体类 9.1 基础知识介绍 9.2 CFont类 9.3 文本输出过程 9.4 字体和文本输出实例 9.5 根据数据绘制相应的柱状图 9.6 根据坐标绘制三角形 小结 第10章 对话框 10.1 对话框的创建 10.1.1 对话框的
©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值