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;
HBITMAP?????hbmpItem;
} 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消息。如果該值被指定,則dwTypeData成員包含一個應用程序定義的值。
?????
????MFT_RADIOCHECK??如果hbmpChecked成員是NULL ,顯示選中的菜單項使用一個單選按鈕來代替一個復選標記
?
?????MFT_RIGHTJUSTIFY??向右對齊菜單項和所有后來的項,如果菜單項在菜單欄內這個值才是唯一有效的
?
?????MFT_RIGHTORDER??Windows 95, Windows NT 5.0,和隨后的:指定那個級聯菜單從右至左(默認的是左
????????????????????????????????????????????至右).這是支持習慣右至左的語言,比喻阿拉伯語的和希伯來語。
?
?????MFT_SEPARATOR?指定那個菜單項是一個分隔條.一個分隔條菜單項顯示為一條水平分隔線.
????????????????????????????????????????dwTypeDate和cch成員被忽視.?這個值在一個下拉菜單,子菜單,或快捷菜單才是有效的
?
?????MFT_STRING?????用一個文本字符串顯示菜單項.dwTypeData成員指示一個以NULL結尾的字符串,并且cch
???????????????????????????????????????成員是字符串的長度
?
?MFT_BITMAP, MFT_SEPARATOR, and MFT_STRING?任何一個值都不能相互組合使用,只有在設置了fMask為
MIIM_TYPE時才能使用fType。
?
fState
?????????菜單項的狀態.這個成員可以是一個或多個的這些值:
?
?????????MFS_CHECKED?復選的菜單項.至于更多關于菜單項選中的信息,看hbmpChecked成員.
?
?????????MFS_DEFAULT??指定默認的菜單項。一個菜單僅僅只可以包含一個默認的菜單項,用粗體顯示。
?
?????????MFS_DISABLED菜單項無效并變灰使得它不能被選擇.等效于MFS_GRAYED.
?
?????????MFS_ENABLED??激活菜單項使它可以被選擇。這是默認的狀態.
?
?????????MFS_GRAYED菜單項無效并變灰使得它不能被選擇.等效于MFS_DISABLED.
?
?????????MFS_HILITE?菜單項高亮顯示。
?
?????????MFS_UNCHECKED?取消復選菜單項.至于更多關于菜單項unchecked信息,看hbmpUnchecked成員變量
?
?????????MFS_UNHILITE?移除菜單項的高亮顯示,這是默認狀態.
?使用fState前應設置了fMask的MIIM_STATE標記。
wID
???????????應用程序定義的16位的值用來標識菜單項,?只有在設置了fMask的MIIM_ID時才能使用
?
hSubMenu
??????????菜單項相關聯的下拉菜單或子菜單的的句柄。如果菜單項不是一個打開的下拉菜單或子菜單,那這個成員是NULL,?該項只有在設置了fMask的MIIM_SUBMENU時才能使用
?
hbmpChecked
?????????菜單項被選中時顯示在一側的位圖的句柄.如果這個成員是NULL,使用一個默認的位圖.如果為fType指定了
??????????MFT_RADIOCHECK,這個默認的圖片是子彈一樣的圖片。否則它是復選標記,該項只有在設置了fMask的MIIM_CHECKMARKS時才能使用。
?hbmpUnchecked
菜單項沒有被選中時顯示在一側的位圖的句柄.如果這個成員是NULL,沒有位圖被使用,該項只有在設置了fMask為MIIM_CHECKMARKS時才能使用。
?
dwItemData?
?????????????應用程序定義的菜單項相關聯的值,該項只有在設置了fMask的MIIM_DATA時才能使用。
?
dwTypeData?
?????????????菜單項的內容,它的具體意義依賴于fTYPE值,并且它只能在fMask設置了MIIM_TYPE標記時才能被使用;
要檢索一個MFT_STRING類型的菜單項,首先要得到該字符串的大小,通過設置MENUITEMINFO結構的dwTypeData值為空并調用函數GetMenuItemInfo得到的cch值就是字符串的大小,然后分配一個字符串大小的緩沖區,把指向緩沖區的指針存賦給dwTypeData并再次調用GetMenuItemInfo函數用字符串來填充緩沖區。如果檢索其它類型的菜單項,GetMenuItemInfo函數會賦給dwTypeData一個類型由fType成員指定的值。當使用SetMenuItemInfo函數時,dwTypeData必須包含一個類型由fType成員指定的值,該項只有在設置了fMask成員的MIIM_STRING標記時才能使用。
?
cch
?????????當檢索一個MFT_STRING類型菜單項的信息時,為菜單項文本(TCHAR)的長度。這個成員只能在當設置了fMask成員的MIIM_TYPE標記時使用,否則為0。當菜單項的內容由函數SetMenuItemInfo設置時,這個成員將被忽略。
?????????在調用GetMenuItemInfo之前,程序必須由dwTypeData設置該成員為緩沖區的長度。?如果要檢索的菜單項類型為MFT_STRING(由fType成員指定),這時GetMenuItemInfo設置cch為被檢索字符串的長度。如果檢索的是其它類型的菜單項,GetMenuItemInfo設置cch的值為0。
?????????該項只有在設置了fMask成員的MIIM_STRING標記時才能使用。
hbmpItem
?????????菜單項上顯示位圖的句柄,它可能是以下標記中的一個,該項只有在設置了fMask成員的MIIM_BITMAP標記時才能使用。
HBMMENU_CALLBACK
?????????一個由擁有該菜單的窗口繪制的位圖。應用程序必須處理WM_MEASUREITEM和WM_DRAWITEM消息。
HBMMENU_MBAR_CLOSE
?????????菜單欄的關閉按鈕
HBMMENU_MBAR_CLOSE_D
?????????禁用菜單欄的關閉按鈕
HBMMENU_MBAR_MINIMIZE
?????????菜單欄的最小化按鈕
HBMMENU_MBAR_MINIMIZE_D
?????????禁用菜單欄的最小化按鈕
HBMMENU_MBAR_RESTORE
?????????菜單欄的還原按鈕
HBMMENU_POPUP_CLOSE
?????????子菜單的關閉按鈕
HBMMENU_POPUP_MAXIMIZE
?????????子菜單的最大化按鈕
HBMMENU_POPUP_MINIMIZE
?????????子菜單的最小化按鈕
HBMMENU_POPUP_RESTORE
?????????子菜單的還原按鈕
HBMMENU_SYSTEM
?????????Windows圖標或是在dwItemData中由窗口指定的圖標。
?
備注:
?????????一個菜單可以用用文本和位圖兩種方式中的一種方式顯示菜單項,而不能同時使用。
????????MENUITEMINFO?結構體可以被GetMenuItemInfo, InsertMenuItem, and SetMenuItemInfo?函數使用
總結
以上是生活随笔為你收集整理的MENUITEMINFO结构的翻译(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改仓库如何修改本地仓库的存储位置
- 下一篇: 应用打包Ubuntu下部署ScriptC