CMenu::GetMenuItemInfo 是 MFC 中 CMenu 类的一个公共方法,用于获取菜单项的信息。该方法的原型如下:
BOOL GetMenuItemInfo(
   UINT uItem,
   LPMENUITEMINFO lpMenuItemInfo,
   BOOL fByPosition = FALSE
) const;

其中参数含义如下:

  •  uItem:指定菜单项的标识符或位置。

  •  lpMenuItemInfo:指向 MENUITEMINFO 结构的指针,用于接收菜单项的信息。

  •  fByPosition:如果为 TRUE,则 uItem 参数被解释为菜单项的位置;如果为 FALSE,则 uItem 参数被解释为菜单项的标识符。


MENUITEMINFO 结构定义如下:
typedef struct tagMENUITEMINFO {
   UINT     cbSize;
   UINT     fMask;
   UINT     fType;
   UINT     fState;
   UINT     wID;
   HMENU    hSubMenu;
   HBITMAP  hbmpChecked;
   HBITMAP  hbmpUnchecked;
   DWORD_PTR dwItemData;
   LPTSTR   dwTypeData;
   UINT     cch;
   HBITMAP  hbmpItem;
} MENUITEMINFO, *LPMENUITEMINFO;

你可以通过调用 GetMenuItemInfo 方法来获取指定菜单项的信息,然后检查 MENUITEMINFO 结构中的相应字段,以获取有关菜单项的详细信息。例如:
CMenu menu;
// 假设有一个有效的菜单对象

MENUITEMINFO menuItemInfo;
memset(&menuItemInfo, 0, sizeof(MENUITEMINFO));
menuItemInfo.cbSize = sizeof(MENUITEMINFO);
menuItemInfo.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;

if (menu.GetMenuItemInfo(uItem, &menuItemInfo, TRUE)) {
    // 在这里可以使用 menuItemInfo 结构中的信息
    // 例如,菜单项的标识符是 menuItemInfo.wID
}

这是一个简单的例子,你可以根据你的具体需求设置 fMask 和检查 MENUITEMINFO 结构中的其他字段。


转载请注明出处:http://www.zyzy.cn/article/detail/18982/MFC/CMenu