1 第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)。 2 a) 弹出菜单的种类 b) 多级子菜单 图3-1 菜单与菜单项 2.菜单项 菜单项(menu item)用于发送程序的命令消息,一般由位于左端的图标或(表示选中的)勾符、简述命令功能的标题(caption)串、唯一标识资源的ID、详细说明命令功能的提示串、对应的加速键资源和事件处理函数等多个部分组成。 其中的标题字符串又可包括:菜单名串、访问键、加速键指示串、(表示会弹出一个对话框)省略号“...”和(由系统在弹出菜单时自动生成的,表示对应于子菜单的右向黑三角) 等内容,例如“打开(O)… Ctrl+O”、“工具栏(T)”、“类型(T) ”等,参见图3-1。 3. ID 菜单项和其他所有的Window s 资源一样,都有 ID(IDentifier,标识符)。ID 是一个(在全程序中具有唯一性的)非负整数,用于识别资源,供程序代码使用...