MENUITEMINFOW 结构 (winuser.h)
包含有关菜单项的信息。
语法
typedef struct tagMENUITEMINFOW {
UINT cbSize;
UINT fMask;
UINT fType;
UINT fState;
UINT wID;
HMENU hSubMenu;
HBITMAP hbmpChecked;
HBITMAP hbmpUnchecked;
ULONG_PTR dwItemData;
LPWSTR dwTypeData;
UINT cch;
HBITMAP hbmpItem;
} MENUITEMINFOW, *LPMENUITEMINFOW;
成员
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。 |
|
在菜单栏的新行 (Places菜单项) ,或者在下拉菜单、子菜单或快捷菜单) 的新列 (中。 对于下拉菜单、子菜单或快捷菜单,垂直线将新列与旧列分隔开。 |
|
在菜单栏的新行 (Places菜单项) ,或者在下拉菜单、子菜单或快捷菜单) 的新列 (中。 对于下拉菜单、子菜单或快捷菜单,列不会用垂直线分隔。 |
|
将绘制菜单项的责任分配给拥有菜单的窗口。 窗口在菜单首次显示之前接收 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类型的菜单项,请先通过将 MENUITEMINFO 的 dwTypeData 成员设置为 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 成员) 所示,则 GetMenuItemInfo 会将 cch 更改为菜单项文本的长度。 如果检索到的菜单项属于其他类型, 则 GetMenuItemInfo 会将 cch 字段设置为零。
在 fMask 成员中设置MIIM_STRING标志时,将使用 cch 成员。
hbmpItem
类型: HBITMAP
要显示的位图的句柄,也可以是下表中的值之一。 它在 fMask 成员中设置MIIM_BITMAP标志时使用。
值 | 含义 |
---|---|
|
由拥有菜单的窗口绘制的位图。 应用程序必须处理 WM_MEASUREITEM 并 WM_DRAWITEM 消息。 |
|
菜单栏的“关闭”按钮。 |
|
菜单栏的“已禁用关闭”按钮。 |
|
菜单栏的最小化按钮。 |
|
禁用菜单栏的最小化按钮。 |
|
菜单栏的“还原”按钮。 |
|
子菜单的“关闭”按钮。 |
|
子菜单的“最大化”按钮。 |
|
子菜单的“最小化”按钮。 |
|
子菜单的“还原”按钮。 |
|
Windows 图标或在 dwItemData 中指定的窗口的图标。 |
注解
MENUITEMINFO 结构与 GetMenuItemInfo、InsertMenuItem 和 SetMenuItemInfo 函数一起使用。
菜单可以使用文本和/或位图显示项。
注意
winuser.h 标头将 MENUITEMINFO 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | winuser.h (包括 Windows.h) |
请参阅
概念性
引用