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

指示要检索或设置的成员。 此成员可以是以下一个或多个值。

含义
MIIM_BITMAP
0x00000080
检索或设置 hbmpItem 成员。
MIIM_CHECKMARKS
0x00000008
检索或设置 hbmpCheckedhbmpUnchecked 成员。
MIIM_DATA
0x00000020
检索或设置 dwItemData 成员。
MIIM_FTYPE
0x00000100
检索或设置 fType 成员。
MIIM_ID
0x00000002
检索或设置 wID 成员。
MIIM_STATE
0x00000001
检索或设置 fState 成员。
MIIM_STRING
0x00000040
检索或设置 dwTypeData 成员。
MIIM_SUBMENU
0x00000004
检索或设置 hSubMenu 成员。
MIIM_TYPE
0x00000010
检索或设置 fTypedwTypeData 成员。

MIIM_TYPE 替换为 MIIM_BITMAPMIIM_FTYPEMIIM_STRING

fType

类型: UINT

菜单项类型。 此成员可以是以下一个或多个值。

MFT_BITMAPMFT_SEPARATORMFT_STRING值不能相互组合。 将 fMask 设置为 MIIM_TYPE 以使用 fType

仅当 fMask 的值为 MIIM_FTYPE 时才使用 fType

含义
MFT_BITMAP
0x00000004L
使用位图显示菜单项。 dwTypeData 成员的低序字是位图句柄,cch 成员将被忽略。

MFT_BITMAP 替换为 MIIM_BITMAPhbmpItem

MFT_MENUBARBREAK
0x00000020L
在菜单栏的新行 (Places菜单项) ,或者在下拉菜单、子菜单或快捷菜单) 的新列 (中。 对于下拉菜单、子菜单或快捷菜单,垂直线将新列与旧列分隔开。
MFT_MENUBREAK
0x00000040L
在菜单栏的新行 (Places菜单项) ,或者在下拉菜单、子菜单或快捷菜单) 的新列 (中。 对于下拉菜单、子菜单或快捷菜单,列不会用垂直线分隔。
MFT_OWNERDRAW
0x00000100L
将绘制菜单项的责任分配给拥有菜单的窗口。 窗口在菜单首次显示之前接收 WM_MEASUREITEM 消息,每当必须更新菜单项的外观时,都会收到 WM_DRAWITEM 消息。 如果指定了此值, 则 dwTypeData 成员包含应用程序定义的值。
MFT_RADIOCHECK
0x00000200L
如果 hbmpChecked 成员为 NULL,则使用单选按钮标记而不是检查标记显示所选菜单项。
MFT_RIGHTJUSTIFY
0x00004000L
将菜单项和任何后续项右对齐。 仅当菜单项位于菜单栏中时,此值才有效。
MFT_RIGHTORDER
0x00002000L
指定菜单从右到左级联, (默认值为从左到右) 。 这用于支持从右到左的语言,例如阿拉伯语和希伯来语。
MFT_SEPARATOR
0x00000800L
指定菜单项是分隔符。 菜单项分隔符显示为水平分隔线。 忽略 dwTypeDatacch 成员。 此值仅在下拉菜单、子菜单或快捷菜单中有效。
MFT_STRING
0x00000000L
使用文本字符串显示菜单项。 dwTypeData 成员是指向以 null 结尾的字符串的指针,cch 成员是字符串的长度。

MFT_STRING 替换为 MIIM_STRING

fState

类型: UINT

菜单项状态。 此成员可以是其中一个或多个值。 将 fMask 设置为 MIIM_STATE 以使用 fState

含义
MFS_CHECKED
0x00000008L
检查菜单项。 有关所选菜单项的详细信息,请参阅 hbmpChecked 成员。
MFS_DEFAULT
0x00001000L
指定菜单项为默认值。 一个菜单只能包含一个以粗体显示的默认菜单项。
MFS_DISABLED
0x00000003L
禁用菜单项并将其灰显,以便无法选择它。 这等效于 MFS_GRAYED
MFS_ENABLED
0x00000000L
启用菜单项,以便可以选择它。 这是默认状态。
MFS_GRAYED
0x00000003L
禁用菜单项并将其灰显,以便无法选择它。 这等效于 MFS_DISABLED
MFS_HILITE
0x00000080L
突出显示菜单项。
MFS_UNCHECKED
0x00000000L
取消选中菜单项。 有关清除菜单项的详细信息,请参阅 hbmpChecked 成员。
MFS_UNHILITE
0x00000000L
从菜单项中删除突出显示。 这是默认状态。

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类型的菜单项,请先通过将 MENUITEMINFOdwTypeData 成员设置为 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标志时使用。

含义
HBMMENU_CALLBACK
( (HBITMAP) -1)
由拥有菜单的窗口绘制的位图。 应用程序必须处理 WM_MEASUREITEMWM_DRAWITEM 消息。
HBMMENU_MBAR_CLOSE
( (HBITMAP) 5)
菜单栏的“关闭”按钮。
HBMMENU_MBAR_CLOSE_D
( (HBITMAP) 6)
菜单栏的“已禁用关闭”按钮。
HBMMENU_MBAR_MINIMIZE
( (HBITMAP) 3)
菜单栏的最小化按钮。
HBMMENU_MBAR_MINIMIZE_D
( (HBITMAP) 7)
禁用菜单栏的最小化按钮。
HBMMENU_MBAR_RESTORE
( (HBITMAP) 2)
菜单栏的“还原”按钮。
HBMMENU_POPUP_CLOSE
( (HBITMAP) 8)
子菜单的“关闭”按钮。
HBMMENU_POPUP_MAXIMIZE
( (HBITMAP) 10)
子菜单的“最大化”按钮。
HBMMENU_POPUP_MINIMIZE
( (HBITMAP) 11)
子菜单的“最小化”按钮。
HBMMENU_POPUP_RESTORE
( (HBITMAP) 9)
子菜单的“还原”按钮。
HBMMENU_SYSTEM
( (HBITMAP) 1)
Windows 图标或在 dwItemData 中指定的窗口的图标。

注解

MENUITEMINFO 结构与 GetMenuItemInfoInsertMenuItemSetMenuItemInfo 函数一起使用。

菜单可以使用文本和/或位图显示项。

注意

winuser.h 标头将 MENUITEMINFO 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 winuser.h (包括 Windows.h)

请参阅

概念性

GetMenuItemInfo

InsertMenuItem

菜单

引用

SetMenuItemInfo

WM_DRAWITEM

WM_MEASUREITEM