1、1 第第7章章 菜单程序设计菜单程序设计 本章主要内容本章主要内容:1)菜单简介2)菜单中的ID3)菜单加速键4)添加新菜单5)定义菜单项的命令消息处理函数6)实现菜单控制2022-8-92 7.1 菜单简介菜单简介 菜单是一系列命令的列表,是最常用的命令输入方式。在Windows中,几乎所有的操作都与菜单有关。当用户选择菜单项目后能实现相应的功能,实际上是向窗口对象发送了命令消息,系统调用相应的消息处理函数来实现相应的功能。Windows应用程序中的菜单是按照一定层次结构组织的,包括顶层菜单和弹出菜单,其中,弹出菜单又包括菜单项和其它的弹出菜单。2022-8-937.2 菜单中的菜单中的ID
2、 菜单中的每个菜单项都由菜单项名和ID两个基本要素组成,如下图所示。在菜单资源中,每个菜单项必须有一个唯一的ID号对它进行标记,这个ID号是系统对菜单项进行识别时使用的。2022-8-94 设计一个单文档程序设计一个单文档程序 在在Workspace中打开中打开Menu,双击双击 IDR_MAIN_FRAME:得到应用程序缺省菜单资源。得到应用程序缺省菜单资源。2022-8-95 右击右击Workspace的的IDR_MAINFRAME,选选Properties,得菜单属性对话框,也可以双击。得菜单属性对话框,也可以双击。2022-8-96 双击菜单空白菜单空白:支持支持ALT+S快捷键快捷键
3、,选选Pop-up:包含子菜单。包含子菜单。2022-8-97 按住拖动菜单到适当位置,按住拖动菜单到适当位置,双击下拉菜单。菜单。2022-8-987.3.菜单加速键菜单加速键 在图所示的界面中,选择Resource View选择卡中的My resources下的菜单资源Menu,在主菜单IDR_MAINFRAME上双击,调出菜单资源编辑器。使用菜单资源编辑器为主菜单添加一列新菜单,如图所示。2022-8-99 设计一个单文档程序设计一个单文档程序 在在Workspace中打开中打开Menu,双击双击 IDR_MAIN_FRAME:得到应用程序缺省菜单资源。得到应用程序缺省菜单资源。2022
4、-8-910 右击右击Workspace的的IDR_MAINFRAME,选选Properties,得菜单属性对话框。得菜单属性对话框。2022-8-911 双击菜单空白菜单空白:支持ALT+S快捷键 选Pop-up:包含子菜单。菜单。2022-8-912 按住拖动菜单到适当位置,按住拖动菜单到适当位置,双击下拉菜单。菜单。2022-8-913 添加添加快捷键:在在Workspace中,中,双击Accelerator下的IDR_MAINFRAME.右击键,选NEW Accelerator 修改加速键修改加速键2022-8-9142022-8-9157.4 添加新菜单添加新菜单:在如图所示的界面中
5、,选择菜单资源Menu,单击右键。在弹出菜单中选择“插入Menu”菜单项,为当前工程插入新菜单IDR_My1,如图所示。2022-8-9 16 插入新菜单插入新菜单2022-8-9 17 双击双击2022-8-9 18 右击右击2022-8-9 19 双击双击2022-8-9207.5.定义菜单项的命令消息处理函数定义菜单项的命令消息处理函数 1.命令消息命令消息 作为用户接口对象,菜单项被用户选择后,会触发WM_COMMAND命令消息,命令消息可以被文档类、应用程序类、视图类、窗口类等多种对象接收、处理。用户编程时,可以通过选择“查看”菜单下的“建立类向导”菜单项,为菜单项的命令消息映射。2
6、022-8-921 对于每一个菜单项,在MFC Class Wizard的Messages下拉列表框中都提供了:COMMAND和UPDATE_COMMAND_UI两种消息,其中,COMMAND为命令消息,主要处理用户的单击操作,UPDATE_COMMAND_UI为更新命令用户接口消息,主要使菜单项有效,无效或给菜单项动态添加检查标记等。当用户选择菜单项时,会触发命令消息,命令消息没有默认的消息处理函数,程序员必须自己定义每个菜单项的命令消息处理函数,并实现该消息的处理函数。2022-8-922命令消息处理更新命令用户接口消息2022-8-9232.创建菜单应用程序创建菜单应用程序:设计一个单文
7、档程序设计一个单文档程序 在在Workspace中打开中打开Menu,双击双击 IDR_MAIN_FRAME:得到应用程序缺省菜单资源。得到应用程序缺省菜单资源。2022-8-924 右击右击Workspace的的IDR_MAINFRAME,选选Properties,得菜单属性对话框。得菜单属性对话框。2022-8-925 双击菜单空白菜单空白:支持ALT+S快捷键 选Pop-up:包含子菜单。菜单。2022-8-926 按住拖动菜单到适当位置,按住拖动菜单到适当位置,双击下拉菜单。菜单。2022-8-927 添加添加快捷键:在在Workspace中,中,双击Accelerator下的IDR_
8、MAINFRAME.右击键,选NEW Accelerator修改加修改加速键速键2022-8-9282022-8-9297.6 实现菜单控制实现菜单控制 菜单控制指通过菜单选项,向应用程序发送命令,菜单控制指通过菜单选项,向应用程序发送命令,应用程序处理消息。应用程序处理消息。在在“计算计算”栏栏右击键,选ClassWizard.2022-8-930 Class name 确定应用程序的位置,由于应用程序收到消息后,并不能确定应用程序的位置,按以下class顺序搜索:view Doc Sdi Mdi 子框架子框架 主框架主框架2022-8-931 Object IDS:确定消息属主对象确定消息属主对象 Message 菜单选项消息包括(命令消息和维护自身消息)菜单选项消息包括(命令消息和维护自身消息)增加成员函数增加成员函数2022-8-932菜单菜单“系统系统”的函数的函数2022-8-933 对应对应4个下拉菜单的函数个下拉菜单的函数2022-8-9