第7章资源在 Windows编程中 的应用 加速键 位图 光标 资源〈对话框 菜单 字符串 工具条
1 第7章 资源在Windows编程中 的应用 加速键 对话框 位图 资源 光标 菜单 工具条 字符串
7.1菜单和加速键资源及其应用 菜单由以下组成部分: (1)窗口主菜单条 (2)下拉式菜单框 (3)菜单项热键标识 (4)菜单项加速键标识 (5)菜单项分隔线
2 7.1菜单和加速键资源及其应用 菜单由以下组成部分: (1) 窗口主菜单条 (2) 下拉式菜单框 (3) 菜单项热键标识 (4) 菜单项加速键标识 (5) 菜单项分隔线
711菜单的创建过程 (1)定义菜单 菜单在资源描述文件中的定义形式为: 选项 说明 字符串,或 DISCARDABLE当不再需要菜单时可丢弃 1-6532 FIXED将菜单保存在内存中的固定位置 间的整数I0 ADONCALL需要时加载菜单 MOVEABLE菜单在内存中可移动 PRELOAD 立即加载菜单 menuID menu[,载入特性选项]{莱单项列表} POPUP语句 MENUITEM语句
3 7.1.1菜单的创建过程 (1)定义菜单 菜单在资源描述文件中的定义形式为: menuID MENU [,载入特性选项]{菜单项列表} 字符串,或 1~65535之 间的整数 选 项 说 明 DISCARDABLE 当不再需要菜单时可丢弃 FIXED 将菜单保存在内存中的固定位置 LOADONCALL 需要时加载菜单 MOVEABLE 菜单在内存中可移动 PRELOAD 立即加载菜单 POPUP语句 MENUITEM语句
POUP语句定义弹出式菜单,其形式为: POPUP"菜单项名”[,选项]; 选项 说明 MENUBARBREAK 菜单项纵向分隔标志 CHECKED 显示选中标志 INACTIVE 禁止一个菜单项 GRAYED 禁止并变灰显示 在菜单项名中加入符号“&”,以定义热键 定义弹出式菜单项“编辑”的形式如下: POUP“编辑(&E)”;
4 POPUP语句定义弹出式菜单,其形式为: POPUP "菜单项名" [,选项]; 在菜单项名中加入符号“&”,以定义热键 定义弹出式菜单项“编辑”的形式如下: POPUP “编辑(&E)” ; 选 项 说 明 MENUBARBREAK 菜单项纵向分隔标志 CHECKED 显示选中标志 INACTIVE 禁止一个菜单项 GRAYED 禁止并变灰显示
MENUITEM用于定义菜单项,其形式为 MENUITEM"菜单项名”菜单项标识(ID)[, 选项] ID为菜单项标识,在 WM COMMAND消息 中字参数 wParam中包含选中菜单项的标识。 每个菜单项的标识必须唯一,标识值常在 头文件中定义。 如:创建菜单中的水平分隔符: MENUITEM SEPARATOR
5 MENUITEM用于定义菜单项,其形式为: MENUITEM "菜单项名" 菜单项标识(ID)[, 选项] ID为菜单项标识,在WM_COMMAND消息 中字参数wParam中包含选中菜单项的标识。 每个菜单项的标识必须唯一,标识值常在 头文件中定义。 如:创建菜单中的水平分隔符: MENUITEM SEPARATOR
该菜单在资源描述文件中的定义如下: #include #include menu.h'l ∥菜单定义 My menu MENU MOⅤ EABLE [ POPUP"文件(&F) { MENUITEM"新建(&N)", IDM NEW MENUITEM"打开(&0)", IDM OPEN MENUITEM"关闭(&C)", IDM CLOSE MENUITEM 保存(&S)", IDM SAVE MENUITEM"另存为(&A)", IDM SAVEAS MENUITEM SEPARATOR MENUITEM“退出(&X)”, IDM EXIT
6 该菜单在资源描述文件中的定义如下: #include #include "Menu.h" ∥菜单定义 My_menu MENU MOVEABLE {POPUP "文件(&F)" { MENUITEM "新建(&N)" , IDM_NEW MENUITEM "打开(&O)" , IDM_OPEN MENUITEM "关闭(&C)" , IDM_CLOSE MENUITEM "保存(&S)" , IDM_SAVE MENUITEM "另存为(&A)" , IDM_SAVEAS MENUITEM SEPARATOR MENUITEM “退出(&X)” , IDM_EXIT } }
menu. h文件中定义了菜单项标识所对应的 数值: ●●●●●● #define IDM neW 10 define IDM OPEN define IDM CLOSE define IDM SAVE 13 define IDM savEAS 14 define IDM EXIt 15 ●●●
7 menu.h 文件中定义了菜单项标识所对应的 数值: …… #define IDM_NEW 10 #define IDM_OPEN 11 #define IDM_CLOSE 12 #define IDM_SAVE 13 #define IDM_SAVEAS 14 #define IDM_EXIT 15 …
(2)加载菜单资源 在窗口类中加载菜单 WNDCLASS wndclass wndclass. pszMenuName=lpszMenuName 在创建窗口时加载菜单 HWNd hwnd: hmenu hmenu hmenuLoadMenu(hInstance, "My menu") hwnd=CreateWindow(., hmenu,.) 动态加载菜单 hmenu2=LoadMenu(hInstance, Menu2); Setmenu(hwnd, hmenu2);
8 (2)加载菜单资源 在窗口类中加载菜单 在创建窗口时加载菜单 动态加载菜单 WNDCLASS wndclass; … wndclass.lpszMenuName=lpszMenuName; HWND hwnd;HMENU hmenu; … hmenu=LoadMenu(hlnstance, "My_menu"); hwnd=CreateWindow( …,hmenu, …); hmenu2=LoadMenu(hlnstance, "Menu2"); SetMenu(hwnd,hmenu2); …
7.1.2操作菜单项 1.禁止或激活菜单项据M配M的取值,可为 BOOL EnableMenultem 单项在菜单中位置 (HMENU hmenu UINT WIDEnableltem,//被禁止或激活的菜单项标识 uint dwEnable 标识 说明 MF BYCOMMAND以⑩值标识菜单项 MF ENABLED激活菜单项 MF BYPOSITION表明以位置标识菜单项 MF GRAYED禁止菜单项并使其变灰显示 MF DISABLED禁止菜单项
9 7.1.2操作菜单项 1.禁止或激活菜单项 BOOL EnableMenuItem (HMENU hmenu, UlNT wIDEnableItem,//被禁止或激活的菜单项标识 UINT dwEnable ) 据dwEnable的取值,可为 菜单项的ID值,也为该菜 单项在菜单中位置 标 识 说 明 MF_BYCOMMAND以ID值标识菜单项 MF_ENABLED 激活菜单项 MF_BYPOSITION 表明以位置标识菜单项 MF_GRAYED 禁止菜单项并使其变灰显示 MF_DISABLED 禁止菜单项
2.设置或取消选中标志 dWORD CheckMenultem hmenU hmenu uint WIDCheckitem,//莱单项标识 uint dw Check //操作标识 标识 说明 MF CHECKED添加选中标志 MF UNCHECKED删除选中标志 10
10 2.设置或取消选中标志 DWORD CheckMenuItem ( HMENU hmenu, UINT wIDCheckItem, //菜单项标识 UINT dwCheck //操作标识 ) 标 识 说 明 MF_CHECKED 添加选中标志 MF_UNCHECKED 删除选中标志