资源在Windows编程中的应用(自学)



《资源在Windows编程中的应用(自学)》由会员分享,可在线阅读,更多相关《资源在Windows编程中的应用(自学)(53页珍藏版)》请在文档大全上搜索。
1、1第第7章章 资源在资源在Windows编程中编程中的应用的应用加速键加速键对话框对话框位图位图资源光标光标菜单菜单工具条工具条字符串字符串 27.1菜单和加速键资源及其应用 菜单由以下组成部分:菜单由以下组成部分:(1) 窗口主菜单条窗口主菜单条(2) 下拉式菜单框下拉式菜单框(3) 菜单项热键标识菜单项热键标识(4) 菜单项加速键标识菜单项加速键标识(5) 菜单项分隔线菜单项分隔线37.1.1菜单的创建过程菜单的创建过程 (1)(1)定义菜单定义菜单 菜单在资源描述文件中的定义形式为:菜单在资源描述文件中的定义形式为:menuID MENU ,menuID MENU ,载入特性载入特性选项
2、选项菜单项列表菜单项列表 字符串,或字符串,或165535之之间的整数间的整数 选选 项项说说 明明DISCARDABLE DISCARDABLE 当不再需要菜单时可丢弃当不再需要菜单时可丢弃FIXEDFIXED 将菜单保存在内存中的固定位置将菜单保存在内存中的固定位置LOADONCALLLOADONCALL需要时加载菜单需要时加载菜单MOVEABLEMOVEABLE菜单在内存中可移动菜单在内存中可移动PRELOADPRELOAD立即加载菜单立即加载菜单POPUP语句语句 MENUITEM语句语句 4POPUP语句定义弹出式菜单,其形式为:语句定义弹出式菜单,其形式为:POPUP POPUP
3、菜单项名菜单项名 ,选项,选项 ; 在菜单项名中加入符号在菜单项名中加入符号“&”,以定义热键,以定义热键定义弹出式菜单项定义弹出式菜单项“编辑编辑”的形式如下:的形式如下:POPUP “POPUP “编辑(编辑(&E&E)”; 选选 项项说说 明明MENUBARBREAKMENUBARBREAK菜单项纵向分隔标志菜单项纵向分隔标志CHECKEDCHECKED显示选中标志显示选中标志INACTIVEINACTIVE禁止一个菜单项禁止一个菜单项GRAYEDGRAYED禁止并变灰显示禁止并变灰显示5MENUITEM用于定义菜单项,其形式为:用于定义菜单项,其形式为:MENU
4、ITEM MENUITEM 菜单项名菜单项名 菜单项标识(菜单项标识(IDID) ,选项选项 ID为菜单项标识,在为菜单项标识,在WM_COMMAND消息消息中字参数中字参数wParam中包含选中菜单项的标识。中包含选中菜单项的标识。每个菜单项的标识必须唯一,标识值常在每个菜单项的标识必须唯一,标识值常在头文件中定义。头文件中定义。如:创建菜单中的水平分隔符:如:创建菜单中的水平分隔符: MENUITEM SEPARATOR6该菜单在资源描述文件中的定义如下:该菜单在资源描述文件中的定义如下:#include #include Menu.h菜单定义菜单定义My_menu MENU MOVEAB
5、LE POPUP POPUP 文件(文件(&F&F) MENUITEM MENUITEM 新建(新建(&N&N) ,IDM_NEWIDM_NEW MENUITEM MENUITEM 打开(打开(&O&O) ,IDM_OPENIDM_OPEN MENUITEM MENUITEM 关闭(关闭(&C&C) ,IDM_CLOSEIDM_CLOSE MENUITEM MENUITEM 保存(保存(&S&S) ,IDM_SAVEIDM_SAVE MENUITEM MENUITEM 另存为(另存为(&A&A) ,
6、IDM_SAVEASIDM_SAVEAS MENUITEM MENUITEM SEPARATOR SEPARATOR MENUITEMMENUITEM“退出(退出(&X&X)”,IDM_EXITIDM_EXIT 7menu.h menu.h 文件中定义了菜单项标识所对应的文件中定义了菜单项标识所对应的数值:数值:#define IDM_NEW #define IDM_NEW 1010#define IDM_OPEN #define IDM_OPEN 1111#define IDM_CLOSE #define IDM_CLOSE 1212#define IDM_SAVE #def
7、ine IDM_SAVE 1313#define IDM_SAVEAS #define IDM_SAVEAS 1414#define IDM_EXIT #define IDM_EXIT 15158(2)加载菜单资源加载菜单资源 在窗口类中加载菜单在窗口类中加载菜单 在创建窗口时加载菜单在创建窗口时加载菜单 动态加载菜单动态加载菜单 WNDCLASS wndclass; wndclass.lpszMenuName=lpszMenuName;HWND hwnd;HMENU hmenu; hmenu=LoadMenu(hlnstance, My_menu); hwnd=CreateWindow( ,
8、hmenu, );); hmenu2=LoadMenu(hlnstance, Menu2);SetMenu(hwnd,hmenu2);97.1.2操作菜单项 1禁止或激活菜单项禁止或激活菜单项 BOOL EnableMenuItemBOOL EnableMenuItem(HMENU hmenu,(HMENU hmenu, UlNT wIDEnableItem,/ UlNT wIDEnableItem,/被禁止或激活的菜单项标识被禁止或激活的菜单项标识 UINT dwEnableUINT dwEnable) )据据dwEnable的取值,可为的取值,可为菜单项的菜单项的ID值,也为该菜值,也为该
9、菜单项在菜单中位置单项在菜单中位置 标标 识识说说 明明MF_BYCOMMAND以以ID值标识菜单项值标识菜单项MF_ENABLED激活菜单项激活菜单项MF_BYPOSITION 表明以位置标识菜单项表明以位置标识菜单项MF_GRAYED禁止菜单项并使其变灰显示禁止菜单项并使其变灰显示MF_DISABLED禁止菜单项禁止菜单项102.2.设置或取消选中标志设置或取消选中标志 DWORD CheckMenuItemDWORD CheckMenuItem( (HMENU HMENU hmenuhmenu, ,UINT wIDCheckItem,UINT wIDCheckItem,/菜单项标识菜单项
10、标识UINT dwCheckUINT dwCheck/操作标识操作标识) ) 标标 识识说说 明明MF_CHECKED添加选中标志添加选中标志MF_UNCHECKED 删除选中标志删除选中标志113.3.增加菜单项增加菜单项 (1)(1) 在菜单的尾部增加菜单项在菜单的尾部增加菜单项 BOOL AppendMenuBOOL AppendMenu( HMENU hmenu,( HMENU hmenu, UINT dwFlags, UINT dwFlags,/ / 新加入的菜单项类型标识新加入的菜单项类型标识 UINT dwIDNewItem,UINT dwIDNewItem, / / 新加入菜单
11、项的新加入菜单项的IDID LPCTSTR lpNewItem LPCTSTR lpNewItem / / 新加入的菜单项内容新加入的菜单项内容) ) 例如在例如在 “文件文件”菜单的末尾增加一项菜单的末尾增加一项“关于关于”:AppendMenu (hmenu, MF_ENABLED,IDM_ABOUT, “AppendMenu (hmenu, MF_ENABLED,IDM_ABOUT, “关于关于(&A)“)(&A)“); 12(2)(2)在菜单中插入菜单项在菜单中插入菜单项 调用函数调用函数InsertMenu 在菜单中插入新的菜单在菜单中插入新的菜单BOOL Inser