1. 程式人生 > >CMenu類中禁用/變灰某一項

CMenu類中禁用/變灰某一項

sof head 使用 窗口 contain codes mce align ide

CMenu::EnableMenuItem 啟用、 禁用,或變暗的菜單項。 UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable);

參數

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類中禁用/變灰某一項