第二章 03界面编程1-菜单.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 界面编程1-菜单 Windows应用程序开发的基础是GUI的设计与编程,GUI包括Windows API提供的窗口、菜单、对话框和控件等基本界面元素,以及MFC提供的工具栏和状态栏等组合控件,还有键盘和鼠标等消息响应与事件驱动。这些内容将在本书的第3~7章中逐个加以讨论,本章介绍菜单的设计与编程。 3.1 菜单 菜单(menu)是传统GUI程序的主要命令接口,可用键盘和鼠标来访问。虽然菜单是基于文字串的,但是相对于(可视方便的)工具条和(直接快速的)快捷键,菜单所提供的程序功能更为完整和全面。 默认的传统MFC应用程序,会在主框架窗口中自动生成一个菜单条(menu bar)。菜单条也叫顶层菜单(top-level menu),一般包含文件、编辑、查看、窗口、帮助等若干下拉菜单。 3.1.1 菜单与菜单项 菜单可分为包含若干菜单项的弹出菜单和发送命令消息的菜单项两大类,可以用键盘和鼠标这两种输入设备来访问菜单和菜单项(简记为“菜单[项]”)。 1.菜单 弹出菜单(pop-up menu,简称为菜单)包含若干菜单项,一般处于(诸菜单项都不可见的)关闭状态。只有在用户(通过菜单名或按鼠标右键)激活菜单时,才由操作系统弹出来显示。并在用户通过选中菜单中的某个菜单项而发送对应的命令消息之后,又被操作系统自动关闭。 (弹出)菜单又可以进一步分成(菜单条中的)下拉菜单(drop-down menu)和(按鼠标右键后在光标处弹出的)快捷菜单(shortcut menu),参见图3-1 a)。弹出菜单中还可以包含若干(多级)子菜单,由其对应的(右端带的)菜单项激活,参见图3-1 b)。 a) 弹出菜单的种类 b) 多级子菜单 图3-1 菜单与菜单项 2.菜单项 菜单项(menu item)用于发送程序的命令消息,一般由位于左端的图标或(表示选中的)勾符、简述命令功能的标题(caption)串、唯一标识资源的ID、详细说明命令功能的提示串、对应的加速键资源和事件处理函数等多个部分组成。 其中的标题字符串又可包括:菜单名串、访问键、加速键指示串、(表示会弹出一个对话框)省略号“...”和(由系统在弹出菜单时自动生成的,表示对应于子菜单的右向黑三角) 等内容,例如“打开(O)… Ctrl+O”、“工具栏(T)”、“类型(T) ”等,参见图3-1。 3.ID 菜单项和其他所有的Windows资源一样,都有ID(IDentifier,标识符)。ID是一个(在全程序中具有唯一性的)非负整数,用于识别资源,供程序代码使用。在Windows编程中,为了便于人类阅读,ID通常是用(以下划线分隔的大写字母单词串组成的)符号常量来表示,如ID_FILE_OPEN。不过,在MFC编程中,一般不需要程序员手工编写符号常量ID的#define宏定义,而是在程序员设置资源的ID属性时,由资源编辑器自动生成。MFC应用程序中的所有ID定义,都位于项目目录下的资源头文件resource.h内。 4.菜单类与对象 在MFC类库中,菜单条和菜单都由CMenu类表示,它是对Windows菜单对象HMENU的类封装。CMenu类是直接从CObject的类派生的: CObject→CMenu 但是在MFC编程中一般不需要直接使用该类,除非你需要动态修改菜单[项]的内容。 菜单对象属于主框架窗口,可先用从基类CWnd继承来的GetMenu函数 CMenu* GetMenu( ) const; 获得菜单条对象的指针(只是临时的,不能保存供以后使用),再用菜单类的成员函数GetSubMenu CMenu* GetSubMenu( int nPos ) const; 来获取指定的下拉式弹出菜单,其中nPos为菜单(从0开始的)位置序号。 若想在视图类中获得程序的菜单对象,则必须先得到主框架窗口的指针,这可以使用从基类CWnd继承来的GetTopLevelFrame成员函数: CFrameWnd* GetTopLevelFrame( ) const; 例如: CFrameWnd *pFrmWnd = GetTopLevelFrame(); // 获取主框架窗口 CMenu *pMenu = pFrmWnd-GetMenu(); // 获取菜单条 CMenu *pSubMenu = pMenu-GetSubMenu(3); // 获取第4个菜单 (mnemonic key,助记键)也叫热键(hot key)是菜单[项]标题字符串中出现的(可用对应的键盘按键快速访问的)带下划线的字符(一般为大写英文字母),例如菜单条上“文件(F)”菜单中的字母“F”和文件菜单中的“另存为(A)”菜单项的字母“A”。 访问键的使用方法有如下两种: 按“Alt+访问键”,可“选中”当前窗口菜

文档评论(0)

xiaofei2001129 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档