1.定义菜单
menuID MENU[,载入特性选项]
{
菜单项列表
}
menuID:标识特定菜单,应用程序通过菜单资源名加载指定菜单,可以为串,或1-65535之间的整数。
MENU关键字:表示资源的性质
载入特性选项:表示菜单所有的载入特性
选项 | |
DISCARDABLE | 当不再需要菜单时可以从内存中卸掉 |
FIXED | 将菜单保存在内存中的固定位置 |
LOADONCALL | 需要时加载菜单 |
MOVEABLE | 菜单在内存中可移动 |
PRELOAD | 立即加载菜单 |
菜单项:在资源文件中永关键字POPUP和MENUITEM定义菜单项
POPUP语句:
定义弹出式菜单
POPUP"菜单名"[,选项];
可以在菜单名中加入符号"&",以定义该菜单项的热键。POPUP"编辑(&E)"; (热键:ALT+E)
MENUITEM语句
定义菜单项
MENUITEM“菜单名”菜单项标识(ID)[,选项]
WM_COMMAND消息的字参数wParam中包含选中菜单项的标识。
操作菜单项
禁止或激活菜单项
BOOL EnableMenuItem(HMENU hmenu,UINT wIDEnableItem,UINT dwEnable)
wIDEnableItem:为被禁止或激活的菜单项标识,根据dwEnable的取值,可能为该菜单项的ID值
也可能为该菜单项在菜单中的位置。
dwEnable标识
MF_BYCOMMAND | 表明以ID值标识菜单项 |
MF_BYPOSITION | 表明以位置标识菜单项 |
MF_DISABLED | 禁止菜单项 |
MF_ENABLED | 激活菜单项 |
MF_GRAYED | 禁止菜单项并使其变灰显示 |
增加菜单项
BOOL AppendMenu(HMENU hmenu,UINT dwFlags,UINT dwIDnewItem,LPCTSTR lpNewItem)
删除菜单项
BOOL DeleteMenu(HMENU hmenu,UINT wPosition,UINT dwFlag)
修改菜单项
BOOL ModifyMenu(HMENU hmenu,UINT wPosition,UINT dwFlag,PTR dwIDNewItem,LPCTSTR lpNewItem)
//定义菜单ID #define IDS_APP_TITLE 103 #define IDC_MY 109 #define INM_ADDMENU 15 //增加菜单项的ID #define IDM_DELMENU 16 //删除菜单项的ID #define IDM_EXIT 17 //退出菜单项的ID #define IDM_HELP 22 //帮助菜单的ID #define IDM_qiuhe 23 //求和菜单的ID #define IDM_fangcha 24 //方差菜单的ID #define IDM_pingjunzhi 25 //平均值菜单的ID #define IDM_junfanggen 26 //均方根菜单的ID
2.加载菜单
在窗口类中加载菜单
WNDCLASSEX wndclass;
wndclass.;pszMenuName=MAKEINTRESOURCE(My_namu);
应用程序在窗口类中加载菜单后,该类窗口将使用此菜单作为默认菜单。
在创建窗口时加载菜单
在调用CreateWindow创建窗口时加载窗口菜单。应用程序首先调用LoadMenu加载菜单。
HMENU LoadMenu
{
hInstance, //hInstance为当前程序的实例句柄
lpszMenuName //窗口菜单名
}
动态加载菜单
应用程序调用函数LoadMenu获取菜单句柄后,还可通过调用函数SetMenu动态地加载菜单,
以提高应用程序的灵活性。
BOOLSetMenu
{
HWND hwnd, //窗口句柄
HMENU hmenu //菜单句柄
}
3.操作菜单项
禁止或激活菜单项
通过在资源文件中设定菜单项的选项,以指定该菜单项的初始状态为禁止或激活,
或调用