MENUITEMINFOA 结构 (winuser.h)
包含有关菜单项的信息。
语法
typedef struct tagMENUITEMINFOA {
UINT cbSize;
UINT fMask;
UINT fType;
UINT fState;
UINT wID;
HMENU hSubMenu;
HBITMAP hbmpChecked;
HBITMAP hbmpUnchecked;
ULONG_PTR dwItemData;
LPSTR dwTypeData;
UINT cch;
HBITMAP hbmpItem;
} MENUITEMINFOA, *LPMENUITEMINFOA;
成员
cbSize
类型:UINT
结构的大小(以字节为单位)。 调用方必须将此成员设置为 sizeof(MENUITEMINFO)
。
fMask
类型:UINT
指示要检索或设置的成员。 此成员可以是以下一个或多个值。
fType
类型:UINT
菜单项类型。 此成员可以是以下一个或多个值。
不能将 MFT_BITMAP、MFT_SEPARATOR和 MFT_STRING 值彼此组合。 将 fMask 设置为 MIIM_TYPE 以使用 fType。
仅当 fMask 的值为 MIIM_FTYPE时,才使用 fType。
价值 | 意义 |
---|---|
|
使用位图显示菜单项。
dwTypeData 成员的低序单词是位图句柄,cch 成员将被忽略。
MFT_BITMAP 替换为 MIIM_BITMAP 和 hbmpItem。 |
|
将菜单项放在新行(对于菜单栏)或新列中(对于下拉菜单、子菜单或快捷菜单)。 对于下拉菜单、子菜单或快捷菜单,垂直线将新列与旧列分开。 |
|
将菜单项放在新行(对于菜单栏)或新列中(对于下拉菜单、子菜单或快捷菜单)。 对于下拉菜单、子菜单或快捷菜单,列不会用垂直线分隔。 |
|
将菜单项绘制到拥有菜单的窗口负责。 窗口在首次显示菜单之前接收 WM_MEASUREITEM 消息,每当必须更新菜单项的外观时,都会收到 WM_DRAWITEM 消息。 如果指定了此值,则 dwTypeData 成员包含应用程序定义的值。 |
|
如果 hbmpChecked 成员 NULL,则使用单选按钮标记而不是复选标记显示所选菜单项。 |
|
右对齐菜单项和任何后续项。 仅当菜单项位于菜单栏中时,此值才有效。 |
|
指定菜单从右向左级联(默认值为从左到右)。 这用于支持从右到左的语言,如阿拉伯语和希伯来语。 |
|
指定菜单项是分隔符。 菜单项分隔符显示为水平分隔线。 忽略 dwTypeData 和 cch 成员。 此值仅在下拉菜单、子菜单或快捷菜单中有效。 |
|
使用文本字符串显示菜单项。
dwTypeData 成员是指向以 null 结尾的字符串的指针,cch 成员是字符串的长度。
MFT_STRING 替换为 MIIM_STRING。 |
fState
类型:UINT
菜单项状态。 此成员可以是其中一个或多个值。 将 fMask 设置为 MIIM_STATE 以使用 fState。
wID
类型:UINT
标识菜单项的应用程序定义值。 将 fMask 设置为 MIIM_ID 以使用 wID。
hSubMenu
类型:HMENU
与菜单项关联的下拉菜单或子菜单的句柄。 如果菜单项不是打开下拉菜单或子菜单的项,则此成员 NULL。 将 fMask 设置为 MIIM_SUBMENU 以使用 hSubMenu。
hbmpChecked
类型:HBITMAP
要显示在项旁边的位图句柄(如果已选中)。 如果此成员 NULL,则使用默认位图。 如果指定了 MFT_RADIOCHECK 类型值,则默认位图为项目符号。 否则,它是一个复选标记。 将 fMask 设置为 MIIM_CHECKMARKS 以使用 hbmpChecked。
hbmpUnchecked
类型:HBITMAP
位图的句柄(如果未选中)旁边显示。 如果此成员 NULL,则不使用位图。 将 fMask 设置为 MIIM_CHECKMARKS 以使用 hbmpUnchecked。
dwItemData
类型:ULONG_PTR
与菜单项关联的应用程序定义值。 将 fMask 设置为 MIIM_DATA 以使用 dwItemData。
dwTypeData
类型:LPTSTR
菜单项的内容。 此成员的含义取决于 fType 的值,并且仅在 fMask 成员中设置 MIIM_TYPE 标志时才使用。
若要检索 MFT_STRING类型的菜单项,请先通过将 dwTypeData 成员 MENUITEMINFO 设置为 NULL,然后调用 getMenuItemInfo来查找字符串的大小。 cch+1 的值是所需的大小。 然后分配此大小的缓冲区,将指针置于 dwTypeData中,递增 cch,并再次调用 GetMenuItemInfo 以用字符串填充缓冲区。 如果检索到的菜单项属于其他类型,则 GetMenuItemInfo 将 dwTypeData 成员设置为由 fType 成员指定的值。
与 SetMenuItemInfo 函数一起使用时,此成员应包含一个类型由 fType 成员指定的值。
仅当在 fMask 成员中设置 MIIM_STRING 标志时,才使用 dwTypeData
cch
类型:UINT
收到有关 MFT_STRING 类型的菜单项的信息时,菜单项文本的长度(以字符为单位)。 但是,仅当在 fMask 成员中设置 MIIM_TYPE 标志且为零时,才使用 cch。 此外,通过 调用 SetMenuItemInfo来设置菜单项的内容时,将忽略 cch。
请注意,在调用 GetMenuItemInfo之前,应用程序必须将 cch 设置为 dwTypeData 成员指向的缓冲区长度。 如果检索到的菜单项的类型为 MFT_STRING(如 fType 成员指示),GetMenuItemInfocch 更改为菜单项文本的长度。 如果检索到的菜单项是某种其他类型,GetMenuItemInfo 将 cch 字段设置为零。
在 fMask 成员中设置 MIIM_STRING 标志时,将使用 cch 成员。
hbmpItem
类型:HBITMAP
要显示的位图的句柄,也可以是下表中的值之一。 在 fMask 成员中设置 MIIM_BITMAP 标志时,将使用它。
价值 | 意义 |
---|---|
|
由拥有菜单的窗口绘制的位图。 应用程序必须处理 WM_MEASUREITEM 并 WM_DRAWITEM 消息。 |
|
菜单栏的“关闭”按钮。 |
|
菜单栏的“已禁用关闭”按钮。 |
|
菜单栏的最小化按钮。 |
|
已禁用菜单栏的最小化按钮。 |
|
菜单栏的“还原”按钮。 |
|
子菜单的“关闭”按钮。 |
|
子菜单的最大化按钮。 |
|
子菜单的最小化按钮。 |
|
子菜单的“还原”按钮。 |
|
dwItemData中指定的窗口的 Windows 图标或图标。 |
言论
MENUITEMINFO 结构用于 getMenuItemInfo、InsertMenuItem和 SetMenuItemInfo 函数。
菜单可以使用文本、位图或两者同时显示项。
注意
winuser.h 标头将 MENUITEMINFO 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | winuser.h (包括 Windows.h) |
另请参阅
概念
参考