菜单的创建过程 - 分为定义和加载两个步骤。
1)定义菜单
菜单的定义格式由四部分组成:
a) 菜单名 - 用来标识特定的菜单,应用程序通过菜单名加载指定菜单;
b) MENU 关键字 - 用来标识资源的性质;
c) 载入特性选项 - 用以标识菜单所具有的载入特性,常用的载入特性选项及其说明如下表所示:
选项 说明
DISCARDABLE 当不再需要菜单时可丢弃
FIXED 将菜单保存在内存中的固定位置
LOADONCALL 需要时加载菜单
MOVEABLE 菜单在内存中可移动
PRELOAD 立即加载菜单
d) 菜单项列表 - 应用程序在资源描述文件中使用关键字 POPUP和MENUITEM定义菜单项。
菜单在资源描述文件中的定义形式为:
菜单名 MENU [, 载入特性选项]
{
菜单项列表
}
(1) POPUP语句 - 定义弹出式菜单,其形式为:
POPUP "菜单项名"[,选项];
程序员还可以在菜单项名中加入符号 "&", 以定义该菜单项的热键。 例如定义弹出式菜单项"编辑"的形式为:
POPUP "编辑(&E)"; 该菜单项使用 Alt+ E键作为热键。
菜单项常用选项及其说明:
选项 说明
MENUBARBREAK 菜单项纵向分隔标志
CHECKED 显示选中标志
INACTIVE 禁止一个菜单项
GRAYED 禁止一个菜单项,并使其变灰
POPUP 定义的弹出式菜单项还包含子菜单。
(2) MENUITEM 语句 - 用于定义菜单项,其形式为:MENUITEM "菜单项名"菜单项标识(ID)[,选项]
其中 ID 为菜单项标识,应用程序通过菜单项的标识值唯一地确认每一个菜单项的消息,菜单项标识可为 0 到 65535 之间的任意一个整数,他通常在应用程序头文件中定义。在WM_COMMAND 消息中系统发送给应用程序的菜单标识值,WM_COMMAND消息中字参数 wParam 包含了选中菜单项的标识。此外,如果需要创建菜单中的水平分隔符,可以利用下面的语句:MENUITEM SEPARATOR
例如,应用程序需要在其名为 "MyMenu" 的窗口菜单中创建一个 "编辑"弹出式菜单。该菜单含有名称为"剪切", "复制", "粘贴", "全选", "清除"及 "退出" 等菜单项。 要求应用程序运行时系统可根据需要调整该菜单在内存中的位置,以提高内存的利用率; 菜单项均使用热键; 并且 "退出" 项与其他菜单项之间用分隔线分开。该菜单在资源描述文件中的定义如下:
#include <windows.h>
#include "Menu.h"
// 菜单定义
MyMenu MENU MOVEABLE // MyMenu 为窗口菜单的名称
{
POPUP "编辑(&E)" // 定义"编辑" 弹出式菜单
{
MENUITEM "剪切( &X)", IDM_CUT
MENUITEM "剪切( &X)", IDM_CUT
MENUITEM "复制( &C)", IDM_COPY
MENUITEM "粘贴( &V)", IDM_PASTE
MENUITEM "全选( &L)", IDM_SELECTALL
MENUITEM "清除( &X)", IDM_CLEAR
MENUITEM SEPARATOR // 分隔线
MENUITEM "退出( &X)", IDM_EXIT
}
}
Menu.h 文件中定义了菜单项标识所对应的数值:
。。。
#define IDM_CUT 20
#define IDM_COPY 21
#define IDM_PASTE 22
#define IDM_SELECTALL 23
#define IDM_CLEAR 24
#define IDM_EXIT 25
// to be continued
自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!