在 MFC(Microsoft Foundation Classes)中,CMenu::SetMenuInfo 是 CMenu 类的一个公共方法,用于设置与菜单关联的 MENUINFO 结构。

以下是该方法的基本信息:
BOOL SetMenuInfo(
   LPCMENUINFO lpMenuInfo
);

参数说明:

  •  lpMenuInfo: 指向 MENUINFO 结构的指针,该结构包含了菜单的信息。


MENUINFO 结构定义如下:
typedef struct tagMENUINFO {
   DWORD cbSize;
   DWORD fMask;
   DWORD dwStyle;
   UINT  cyMax;
   HBRUSH hbrBack;
   DWORD dwContextHelpID;
   ULONG_PTR dwMenuData;
} MENUINFO, *LPMENUINFO;

返回值:

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


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

MENUINFO menuInfo;
memset(&menuInfo, 0, sizeof(MENUINFO));
menuInfo.cbSize = sizeof(MENUINFO);
menuInfo.fMask = MIM_STYLE | MIM_BACKGROUND | MIM_MAXHEIGHT;
menuInfo.dwStyle = MNS_AUTODISMISS;
menuInfo.hbrBack = ::GetSysColorBrush(COLOR_MENU);
menuInfo.cyMax = 200;

BOOL result = menu.SetMenuInfo(&menuInfo);

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

在上述示例中,首先通过 CreatePopupMenu 创建了一个弹出式菜单对象 menu,然后定义了一个 MENUINFO 结构,设置了一些菜单信息,包括样式、背景刷、最大高度等。最后,通过 SetMenuInfo 方法将这些菜单信息应用到 menu 对象上。如果设置成功,返回值为非零,你可以在设置成功后使用 menu 对象进行其他操作。如果设置失败,返回值为零,可以根据需要处理设置失败的情况。


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