複製鏈接
請複製以下鏈接發送給好友

ModifyMenu

鎖定
ModifyMenu,該參數修改已存在的菜單項,並指定菜單項的內容、外觀和性能。
中文名
ModifyMenu
函數功能
該參數修改已存在的菜單項
函數原型
BOOL ModifyMenu
hMnu
將被修改的菜單的句柄。

目錄

ModifyMenu函數原型

BOOL ModifyMenu(HMENU hMnu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR IpNewltem);

ModifyMenu參數

hMnu:將被修改的菜單的句柄。
uPosition:指定將被修改的菜單項,其含義由參數UFlags決定。
UFlags:指定控制參數uPosition的解釋的標誌、菜單項的內容、外觀和性能。此參數必須為下列值之一和列於備註裏的一個值的組合。
MF_BYCOMMAND:表示uPostion給出菜單項的標識符。如果MF_BYCOMMAND和MF_BYPOSITION都沒被指定則MF_BYCOMMAND為缺省的標誌。
MF_BYPOSITION:表示uPosition給出菜單項基於零的相對位置。
UIDNewltem:指定被修改菜單項的標識符,或者當參數uFlags設置為MF_POPUP時,指定下拉式菜單或子菜單的句柄。
lpNewltem:指定被修改菜單項的內容。其含義依賴於參數UFlags是否包含標誌MF_BITMAP,MF_OWNERDRAW或MF_STRING。如下所示:
MF_BITMAP:含有位圖句柄;MF_STRING:以`\0’結束的字符串的指針(缺省)。
MF_OWNERDRAW:含有被應用程序應用的32位值,可以保留與菜單項有關的附加數據。當菜單被創建或其外觀被修改時,此值在消息WM_MEASURE或WM_DRAWITEM的參數lparam指向的結構中,成員itemData裏。
返回值:如果函數調用成功,返回值非零;如果函數調用失敗,返回值為零。若想獲得更多的錯誤信息,請調用GetLastError函數。
備註:如果函數ModifyMenu替換了打開下拉式菜單或子菜單的菜單項,則函數銷燬舊的下拉式菜單或子菜單,並釋放它們佔用的內存。
為了使鍵盤加速鍵能控制位圖或自繪製的菜單項,菜單的擁有者必須處理WM_MENUCHAR消息。參見自繪製菜單和WM_MENUCHAR消息。
一旦菜單被修改,無論它是否在顯示窗口裏,應用程序必須調用函數DrawMenuBar。要修改已存在菜單項的屬性,使用函數CheckMenultemEnableMenultem更快。

ModifyMenu例子

CMenu* pSysMenu=GetSystemMenu( FALSE );
/* 禁止:移動菜單*/
pSysMenu ->ModifyMenu(SC_MOVE, MF_BYCOMMAND | MF_GRAYED, -10, "移動");
/* 要改回來時:*/
// pSysMenu ->ModifyMenu(-10, MF_BYCOMMAND | MF_GRAYED, SC_MOVE, "移動");