CMenu類中禁用/變灰某一項
參數
nIDEnableItem
根據所指定的菜單項,若要啟用, nEnable
。 彈出菜單項,以及標準菜單項,可以指定此參數。
nEnable
指定要執行的操作。 它可以是組合的MF_DISABLED, MF_ENABLED
,或MF_GRAYED,與MF_BYCOMMAND或MF_BYPOSITION。 可以通過使用按位 OR 運算符組合這些值。 這些值將具有以下含義︰
-
MF_BYCOMMAND指定參數給出的現有菜單項的命令 ID。 這是默認設置。
-
MF_BYPOSITION指定參數給出的現有菜單項的位置。 第一項位於位置 0。
-
MF_DISABLED禁用菜單項,以便它不能選擇,但它不 dim。
-
MF_ENABLED
啟用菜單項,以便它可以選擇並將其還原的灰顯狀態。 -
MF_GRAYED禁用菜單項,以便它不能同時選擇和調低亮度它。
返回值
以前的狀態 ( MF_DISABLED, MF_ENABLED
,或MF_GRAYED) 則返回 –&1; 是否有效。
備註
CreateMenu, InsertMenu, ModifyMenu,和LoadMenuIndirect成員函數還可以菜單項上的設置狀態 (啟用、 禁用或變暗)。
使用MF_BYPOSITION值要求應用程序使用的正確CMenu
。 如果CMenu
的菜單欄中使用時,會影響頂級菜單項 (在菜單欄中的項)。 若要按位置彈出窗口或嵌套的彈出菜單中設置項的狀態,應用程序必須指定CMenu
的彈出菜單。
當應用程序指定MF_BYCOMMAND標誌,Windows 將檢查所有隸屬於的彈出菜單項CMenu
; 因此,除非存在重復的菜單項時,使用CMenu
的菜單欄就足夠。
例子:
1 CMenu menu; 2 menu.LoadMenuA(IDR_POP_MENU); 3 CMenu* pMenu = menu.GetSubMenu(0); 4 5 pMenu->EnableMenuItem(ID_PrevPage,MF_BYCOMMAND |MF_DISABLED | MF_GRAYED);6 7 pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,AfxGetMainWnd());
pS:
EnableMenuItem要想要起作用必須在MainFrame類中添加該一下代碼
m_bAutoMenuEnable = FALSE;
CMenu類中禁用/變灰某一項