捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
29 2017.06

MENUITEMINFO 结构

点击次数:1341 更新时间:2017-6-29 21:00:15  【打印此页

MENUITEMINFO 结构

MENUITEMINFO 结构包含一个菜单项的相关信息。


结构原型:
 

typedef struct tagMENUITEMINFO {
  UINT      cbSize;
  UINT      fMask;
  UINT      fType;
  UINT      fState;
  UINT      wID;
  HMENU     hSubMenu;
  HBITMAP   hbmpChecked;
  HBITMAP   hbmpUnchecked;
  ULONG_PTR dwItemData;
  LPTSTR    dwTypeData;
  UINT      cch;
  HBITMAP   hbmpItem;
} MENUITEMINFO, *LPMENUITEMINFO;



成员解析:
 

成员

含义

cbSize

1. 指向结构体的大小(字节为单位)
2. 调用者必须用 sizeof(MENUITEMINFO) 来为该成员赋值

fMask

可作为获取输出或者调用者设置成员。该成员可以是一个或多个以下值:

含义

MIIM_BITMAP
(0x00000080)

获取或设置 hbmpItem 成员

MIIM_CHECKMARKS
(0x00000008)

获取或设置 hbmpChecked 和 hbmpUnchecked 成员

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)

1. 获取或设置 fType 和 dwTypeData 成员
2. MIIM_TYPE 可以由 MIIM_BITMAP, MIIM_FTYPE 和 MIIM_STRING 代替

fType

菜单项的类型。该成员可以是一个或多个下列值:
MFT_BITMAP, MFT_SEPARATOR MFT_STRING 这些值不能同时在一起使用。fType 成员只有当 fMask MIIM_TYPE 时才被使用

含义

MFT_BITMAP
(0x00000004L)

1. 使用位图显示菜单项
2. 成员 dwTypeData 的低位字是位图的句柄,cch 成员被忽略
3. MFT_BITMAP 被 MIIM_BITMAP 和 hbmpItem 代替

MFT_MENUBARBREAK
(0x00000020L)

1. 将菜单项移动到新的一行(作为菜单栏)或者新的一列(作为下拉菜单,子菜单或快捷菜单)
2. 对于一个下拉菜单,子菜单或者快捷菜单,新列与旧列之间有一条竖线分隔

MFT_MENUBREAK
(0x00000040L)

1. 将菜单项移动到新的一行(作为菜单栏)或者新的一列(作为下拉菜单,子菜单或快捷菜单)
2. 对于一个下拉菜单,子菜单或者快捷菜单,新列与旧列之间有没有竖线分隔

MFT_OWNERDRAW
(0x00000100L)

1. 将绘制菜单项的任务分配给菜单项所在窗口
2. 窗口在菜单第一次显示之前收到 WM_MEASUREITEM 消息或者 WM_DRAWITEM 消息,无论何时都必须更新菜单项的显示
3. 如果该标识被指定,成员 dwTypeData 将包含一个程序定义的值

MFT_RADIOCHECK
(0x00000200L)

如果 hbmpChecked 成员是 NULL,则用单选按钮代替选中标记来实现选中的菜单项

MFT_RIGHTJUSTIFY
(0x00004000L)

1. 右对齐菜单项和后边所有的项
2. 仅当菜单项在菜单栏中时这个值才有效

MFT_RIGHTORDER
(0x00002000L)

1. 指定那个级联菜单右至左(默认的是左至右)
2. 这是支持习惯右至左的语言,例如阿拉伯和希伯来语

MFT_SEPARATOR
(0x00000800L)

1. 指定菜单项为分隔符
2. 菜单项分隔符显示水平分割线
3. 成员 dwTypeData 和 cch 被忽略
4. 该值在下拉菜单,子菜单和快捷菜单中才有效

MFT_STRING
(0x00000000L)

1. 用字符串显示菜单项
2. 成员 dwTypeData 指向一个空字符结尾的字符串,成员 cch 保存字符串的长度
3. MFT_STRING 被 MIIM_STRING 代替

fState

菜单项的状态。该成员可以是一个或多个下列值
当 fMask 设置为 MIIM_STATE 时使用 fState 成员

含义

MFS_CHECKED
(0x00000008L)

1. 选中菜单项
2. 查看更多的菜单选中的信息,参考 hbmpChecked 成员

MFS_DEFAULT
(0x00001000L)

1. 指定默认的菜单项
2. 一个菜单只能包含一个默认菜单项,该菜单项加粗显示

MFS_DISABLED
(0x00000003L)

1. 菜单项失效并灰化导致其无法被选中
2. 该标识等效于 GRAYED

MFS_ENABLED
(0x00000000L)

1. 菜单项变为有效,使其可以被选中
2. 这是默认的状态

MFS_GRAYED
(0x00000003L)

1. 菜单项失效并灰化,导致其无法被选中
2. 该标识等效于 MFS_DISABLED

MFS_HILITE
(0x00000080L)

菜单项高亮显示

MFS_UNCHECKED
(0x00000000L)

1. 取消菜单项的选中
2. 查看更多的关于清除菜单项选中信息,参考 hbmpChecked 成员

MFS_UNHILITE
(0x00000000L)

1. 去除菜单项高亮显示
2. 这是默认的状态

wID

1. 应用程序定义的辨识菜单项的值
2. 成员 fMask 为 MIIM_ID 时使用

hSubMenu

1. 指向菜单项所关联的下拉菜单或子菜单的句柄
2. 如果该菜单项不是打开下拉菜单或子菜单的菜单项,该成员则为 NULL
3. 成员 fMask 为 MIIM_SUBMENU 时使用

hbmpChecked

1. 如果菜单项被选中,则指向菜单项显示的图像的句柄
2. 如果成员值为 NULL 则使用一个默认的图像
3. 如果指定 MFT_RADIOCHECK 类型的值,默认图像是一个黑点;否则,是一个选中标记
4. 成员 fMask 为 MIIM_CHECKMARKS 时使用

hbmpUnchecked

1. 如果菜单项没有被选中,则指向菜单项显示的图像的句柄
2. 如果成员值为 NULL 则不用使用图像
3. 成员 fMask 为 MIIM_CHECKMARKS 时使用

dwItemData

1. 应用程序定义的与菜单项关联的值
2. 成员 fMask 为 MIIM_DATA 时使用

dwTypeData

1. 菜单项的内容
2. 该值的含义取决于 fType 的值,并且仅当 fMask 中设置了 MIIM_TYPE 标识时才被使用
3. 想要获取一个 MFT_STRING 类型的菜单项,首先要通过设置 dwTypeData 成员为 NULL 来取得字符串的长度,调用 GetMenuItemInfo 函数,cch+1 这个值就是我们需要的;然后分配 cch+1 大小的缓冲区,将 dwTypeData 成员设置为指向该缓冲区的指针,cch 自增,在此调用GetMenuItemInfo 函数利用字符串填充该缓冲区。如果获取到的菜单项是其他类型,调用GetMenuItemInfo 函数获得的成员 dwTypeData 将是 fType 指定类型的值
4. 当使用 SetMenuItemInfo 函数的时候,该成员必须包含一个有 fType 指定类型的值
5. 只有当 fMask 成员设置 MIIM_STRING 标识时,dwTypeData 成员才会被使用

cch

1. 包含菜单项文字的长度,字符为单位,当菜单项为 MFT_STRING 类型时收到该项菜单项信息
2. 仅当 fMask 成员包含 MIIM_TYPE 标识且其他标识为 0 时使用
3. 当菜单项通过调用 SetMenuItemInfo 函数设置时,cch 成员将被忽略
4. 注意,在调用 GetMenuItemInfo 函数之前,必须设置 cch 为 dwTypeData 成员指向的缓冲区的长度。如果获取到的菜单项为 MFT_STRING(由 fType 成员指定)类型,cch 成员将会指向菜单项文本的长度;如果获取到的菜单项是其他类型,cch 成员将会被设置为 0
5. cch 成员会在 fMask 成员包含 MIIM_STRING 时使用

hbmpItem

指向显示的图像句柄,或者可以是下表值中的一个:
fMask 成员包含 MIIM_BITMAP 标识时使用

含义

HBMMENU_CALLBACK
((HBITMAP) -1)

1. 菜单所属窗口绘制一幅位图
2. 应用程序必须处理 WM_MEASUREITEM 和 WM_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指定的图标



备注:

1. MENUITEMINFO 结构体用于 GetMenuItemInfoInsertMenuItem 和 SetMenuItemInfo 函数。

2. 菜单可以支持文字、图像或者两者共存的方式显示菜单项。


需求:
 

Minimum supported client

Windows 2000 专业版 [仅桌面应用程序]

Minimum supported server

Windows 2000 服务器版 [仅桌面应用程序]

Header

Winuser.h (包含于 Windows.h)

Unicode and ANSI names

MENUITEMINFOW (Unicode) 和 MENUITEMINFOA (ANSI)

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1341 更新时间:2017-6-29 21:00:15  【打印此页

上一条:SetWindowLong

下一条:GetMenuItemInfo

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修