MENUITEMINFO结构体说明

 声明:转载此文档时请注意转载来源和我的名字,本人水平有限翻译有误处请指出

 

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 函数使用

你可能感兴趣的:(MENUITEMINFO结构体说明)