在 MFC(Microsoft Foundation Classes)中,CMenu::SetMenuItemInfo 是 CMenu 类的一个公共方法,用于设置菜单项的信息。

以下是该方法的基本信息:
BOOL SetMenuItemInfo(
   UINT uItem,
   UINT uFlags,
   LPCMENUITEMINFO lpMenuItemInfo
);

参数说明:

  •  uItem: 要设置信息的菜单项的标识符或位置索引,取决于 uFlags。

  •  uFlags: 指定 uItem 的标志,可以是 MF_BYCOMMAND 或 MF_BYPOSITION。

  •  lpMenuItemInfo: 指向 MENUITEMINFO 结构的指针,该结构包含了要设置的菜单项的信息。


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;

返回值:

  •  如果成功,则返回非零值;如果失败,则返回零。


示例用法:
CMenu menu;
menu.CreatePopupMenu(); // 创建一个弹出式菜单

MENUITEMINFO menuItemInfo;
memset(&menuItemInfo, 0, sizeof(MENUITEMINFO));
menuItemInfo.cbSize = sizeof(MENUITEMINFO);
menuItemInfo.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
menuItemInfo.fType = MFT_STRING;
menuItemInfo.fState = MFS_ENABLED;
menuItemInfo.wID = IDM_NEW;
menuItemInfo.dwTypeData = _T("New");

// 添加菜单项
BOOL result = menu.InsertMenuItem(0, &menuItemInfo);

if (result)
{
    // 设置菜单项信息成功
    // ...
}
else
{
    // 设置菜单项信息失败
    // ...
}

在上述示例中,首先通过 CreatePopupMenu 创建了一个弹出式菜单对象 menu,然后定义了一个 MENUITEMINFO 结构,设置了菜单项的信息,包括标识符、类型、状态、文本等。最后,通过 InsertMenuItem 方法添加了一个菜单项。如果设置成功,返回值为非零,你可以在设置成功后使用 menu 对象进行其他操作。如果设置失败,返回值为零,可以根据需要处理设置失败的情况。


转载请注明出处:http://www.pingtaimeng.com/article/detail/18997/MFC/CMenu