声明:转载此文档时请注意转载来源和我的名字,本人水平有限翻译有误处请指出
MENUITEMINFO结构包含关于一个菜单项信息
typedef struct tagMENUITEMINFO {
UINT cbSize;
UINT fMask;
UINT fType;
UINT fState;
UINT wID;
HMENU hSubMenu;
HBITMAP hbmpChecked;
HBITMAP hbmpUnchecked;
DWORD dwItemData;
LPTSTR dwTypeData;
UINT cch;
} MENUITEMINFO, FAR *LPMENUITEMINFO;
成员
cbSize
结构的大小,字节
fMask
重新获取或设置成员,这个成员可以使用一个或多个这些值
MIIM_CHECKMARKS 重新获取或设置hbmpChecked和hbmpUnchecked成员
MIIM_DATA 重新获取或设置dwItemData成员
MIIM_ID 重新获取或设置wID成员
MIIM_STATE 重新获取或设置fState成员
MIIM_SUBMENU 重新获取或设置hSubMenu成员
MIIM_TYPE 重新获取或设置fType和dwTypeData成员
fType
菜单项类型.这个成员可以使用一个或多个这些值
MFT_BITMAP 使用一个位图显示菜单项.dwTypeData低次序的字是成员的位图句柄.cch是忽视的.
MFT_MENUBARBREAK 菜单项位置在新行上(适用于菜单栏)或在新列内(适用于下拉菜单,子菜单,
快捷菜单).适用于下拉菜单,子菜单,或快捷菜单,垂直线以前的列中隔离新的列
MFT_MENUBREAK 菜单项位置在新行上(适用于菜单栏)或在新列内(适用于下拉菜单,子菜单,快
捷菜单).适用于下拉菜单,子菜单,或快捷菜单,这个列不被垂直线分开
MFT_OWNERDRAW 分配责任到那个窗体菜单绘制自己的菜单项.在菜单显示之前第一时间窗体收到
一条WM_MEASUREITEM消息,和一条无论何时菜单项的外观都必须更新的WM_DRAWITEM消息
MFT_RADIOCHECK 如果hbmpChecked成员是NULL 显示选中的菜单项使用一个单选按钮来代替一个复选标记
MFT_RIGHTJUSTIFY 权利证明菜单项和所有后来的项,如果菜单项在菜单栏内这个值才是唯一有效的
MFT_RIGHTORDER Windows 95, Windows NT 5.0,和随后的:指定那个层叠菜单右至左(默认的是左
至右).这是支持习惯右至左的语言,这样的人是阿拉伯的和希伯来人
MFT_SEPARATOR 指定那个菜单项是一个隔离物(线条).一个菜单隔离物看起来是水平分划的线条.
dwTypeDate和cch成员忽视. 这个值在一个下拉菜单,子菜单,或快捷菜单才是唯一有效的
MFT_STRING 显示使用菜单项的一个文本字符串.dwTypeData成员指示一个空终止的字符串,和cch
成员是字符串的长度
MFT_BITMAP, MFT_SEPARATOR, and MFT_STRING 任何一个值都不能相互组合使用
fState
菜单项的状态.这个成员可以是一个或多个的这些值:
MFS_CHECKED 复选的菜单项.至于更多关于菜单项选中的信息,看hbmpChecked成员.
MFS_DEFAULT 指定那个是默认的菜单项。一个菜单仅仅只可以包含一个默认的菜单项,粗体显示那个。
MFS_DISABLED 禁止菜单项所以它不能被选择.但是不使它变灰.
MFS_ENABLED 激活菜单项所以它可以被选择。这是默认的状态.
MFS_GRAYED 禁止菜单项和变灰它,所以它不可以被选择.
MFS_HILITE 加亮菜单项
MFS_UNCHECKED 取消复选菜单项.至于更多关于菜单项unchecked信息,看hbmpUnchecked成员变量
MFS_UNHILITE 移除来自菜单项的加亮区.这是默认状态.
wID
应用程序定义16位的值来识别那个菜单项.
hSubMenu
下拉菜单或相关联的子菜单的菜单项的句柄。如果菜单项不是一个打开的下拉菜单或子菜单,那这个成员是NULL
hbmpChecked
如果条目被选中,这个显示项是位图的句柄.如果这个成员是NULL,使用一个默认的位图.如查
MFT_RADIOCHECK类型值是被指定的.这个默认的图片是子弹一样的图片。否则它是复选标记
hbmpUnchecked 如果条目没有被选中,这个显示项是位图的句柄,如果成员是NULL,不能使用位图
dwItemData
应用程序定义的菜单项相关联的值
dwTypeData
菜单项的内容.如果fMask成员设置了MIIM_TYPE标记这个成员才能被使用;
在调用GetMenuItemInfo之前.应用程序必须为这个成员设置一个指定的缓冲区.长度是cch成员指
定.如果取回的菜单项的类型是MFT_STRING,那么GetMenuItemInfo 拷贝菜单项的文本到缓冲区.如果取回
的菜单项是其它类型,那么GetMenuItemInfo设置dwTypeDate一个值,是fType成员指定的
在使用SetMenuItemInfo函数的时候,谁包含这个成员类型的一个值,是fType成员指定.
cch
菜单项文本的长度息,就在一个菜单项的类型是MFT_STRING信息时.如果fMask成员设置
MIIM_TYPE标记和没有其它方面的这个成员是唯一可以使用的.在调用SetMenuItemInfo设置菜单项的内容
时这个成员忽略.在调用GetMenuItemInfo前,应用程序必须为dwTypeDate成员设置一个指定长度的缓冲区.如果取回的菜单
项类型是MFT_STRING(fType成员被指定),那么GetMenuItemInfo设置cch为取回字符串的长度.如果取回的菜单项
是其它类型,GetMenuItemInfo把cch设置为0
说明
MENUITEMINFO 结构体可以被GetMenuItemInfo, InsertMenuItem, and SetMenuItemInfo 函数使用