以下是该方法的一般语法:
BOOL SetMenuItemInfo(UINT uItem, LPMENUITEMINFO lpMenuItemInfo, BOOL bByPos = FALSE);
参数说明:
- uItem:菜单项的标识符(ID)或相对位置,具体取决于 bByPos 参数。
- lpMenuItemInfo:指向 MENUITEMINFO 结构的指针,该结构包含了要设置的菜单项的信息。
- bByPos:一个布尔值,指示 uItem 参数的类型。如果为 TRUE,表示 uItem 是相对位置;如果为 FALSE,表示 uItem 是菜单项的 ID。
MENUITEMINFO 结构的定义如下:
typedef struct tagMENUITEMINFO {
UINT cbSize;
UINT fMask;
UINT fType;
UINT fState;
UINT wID;
HMENU hSubMenu;
HBITMAP hbmpChecked;
HBITMAP hbmpUnchecked;
ULONG_PTR dwItemData;
LPTSTR dwTypeData;
UINT cch;
} MENUITEMINFO, *LPMENUITEMINFO;
参数具体含义如下:
- cbSize:结构的大小,以字节为单位,用于指定结构的大小。
- fMask:用于指定 MENUITEMINFO 结构中哪些成员包含有效信息的标志。
- fType:菜单项的类型标志。
- fState:菜单项的状态标志。
- wID:菜单项的标识符(ID)。
- hSubMenu:菜单项包含的子菜单的句柄。
- hbmpChecked:选中状态下的位图句柄。
- hbmpUnchecked:未选中状态下的位图句柄。
- dwItemData:菜单项的自定义数据。
- dwTypeData:指向包含菜单项文本的缓冲区的指针。
- cch:dwTypeData 缓冲区的大小(字符数)。
返回值:
- 如果成功设置菜单项的信息,则返回 TRUE;否则,返回 FALSE。
使用示例:
CMenu myMenu;
myMenu.LoadMenu(IDR_MYMENU);
MENUITEMINFO menuItemInfo;
menuItemInfo.cbSize = sizeof(MENUITEMINFO);
menuItemInfo.fMask = MIIM_BITMAP | MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_SUBMENU | MIIM_TYPE;
menuItemInfo.fType = MFT_STRING;
menuItemInfo.fState = MFS_ENABLED;
menuItemInfo.wID = IDM_MY_MENU_ITEM;
menuItemInfo.hSubMenu = NULL;
menuItemInfo.hbmpChecked = NULL;
menuItemInfo.hbmpUnchecked = NULL;
menuItemInfo.dwItemData = 0;
menuItemInfo.dwTypeData = _T("My Menu Item");
menuItemInfo.cch = _tcslen(menuItemInfo.dwTypeData);
myMenu.SetMenuItemInfo(IDM_MY_MENU_ITEM, &menuItemInfo, TRUE);
通过调用这个方法,你可以在运行时设置菜单项的各种信息,包括文本、状态、位图、子菜单等。
转载请注明出处:http://www.pingtaimeng.com/article/detail/18966/MFC/CMenu