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

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

价值 意义
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
将菜单项放在新行(对于菜单栏)或新列中(对于下拉菜单、子菜单或快捷菜单)。 对于下拉菜单、子菜单或快捷菜单,垂直线将新列与旧列分开。
MFT_MENUBREAK
0x00000040L
将菜单项放在新行(对于菜单栏)或新列中(对于下拉菜单、子菜单或快捷菜单)。 对于下拉菜单、子菜单或快捷菜单,列不会用垂直线分隔。
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类型的菜单项,请先通过将 dwTypeData 成员 MENUITEMINFO 设置为 NULL,然后调用 getMenuItemInfo来查找字符串的大小。 cch+1 的值是所需的大小。 然后分配此大小的缓冲区,将指针置于 dwTypeData中,递增 cch,并再次调用 GetMenuItemInfo 以用字符串填充缓冲区。 如果检索到的菜单项属于其他类型,则 GetMenuItemInfodwTypeData 成员设置为由 fType 成员指定的值。

SetMenuItemInfo 函数一起使用时,此成员应包含一个类型由 fType 成员指定的值。

仅当在 fMask 成员中设置 MIIM_STRING 标志时,才使用 dwTypeData

cch

类型:UINT

收到有关 MFT_STRING 类型的菜单项的信息时,菜单项文本的长度(以字符为单位)。 但是,仅当在 fMask 成员中设置 MIIM_TYPE 标志且为零时,才使用 cch。 此外,通过 调用 SetMenuItemInfo来设置菜单项的内容时,将忽略 cch

请注意,在调用 GetMenuItemInfo之前,应用程序必须将 cch 设置为 dwTypeData 成员指向的缓冲区长度。 如果检索到的菜单项的类型为 MFT_STRING(如 fType 成员指示),GetMenuItemInfocch 更改为菜单项文本的长度。 如果检索到的菜单项是某种其他类型,GetMenuItemInfocch 字段设置为零。

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)
dwItemData中指定的窗口的 Windows 图标或图标。

言论

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