若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

CMenu::EnableMenuItem

 

啟用或停用,暗灰色的功能表項目。


      UINT EnableMenuItem(
   UINT nIDEnableItem,
   UINT nEnable 
);

nIDEnableItem

指定由決定要啟用的,則功能表項目 nEnable這個參數可以指定快顯功能表項目以及標準的功能表項目。

nEnable

指定要執行的動作。它可以是、或 MF_DISABLEDMF_ENABLEDMF_GRAYED的組合,以 MF_BYCOMMANDMF_BYPOSITION您可以使用或運算子,這些值可以使用位元的 OR 運算組合。這些值的意義如下:

  • MF_BYCOMMAND 指定參數指定現有的功能表項目的命令 ID。這是預設值。

  • MF_BYPOSITION 指定參數重新命名現有的功能表項目的位置。第一個項目在位置 0。

  • MF_DISABLED 停用功能表項目,讓它不能選取,但不會呈現暗灰色。

  • MF_ENABLED 啟用功能表項目,讓它可以選取和還原它從其暗灰色的 (Dimmed) 狀態。

  • MF_GRAYED 停用功能表項目,讓它無法選取它並暗灰色。

前一個狀態 (MF_DISABLEDMF_ENABLEDMF_GRAYED) 或– 1,如果是無效的。

CreateMenuInsertMenuModifyMenuLoadMenuIndirect 成員函式也可以設定狀態 (啟用、停用,或是暗灰色) 功能表項目。

使用 MF_BYPOSITION 值必須是應用程式使用正確的 CMenu如果使用功能表列上的 CMenu ,最上層的功能表項目 (在功能表列上的項目) 都會受到影響。若要依位置設定項目或巢狀快顯功能表的狀態在出現的,應用程式必須指定快顯功能表的 CMenu

當應用程式指定 MF_BYCOMMAND 旗標時, 視窗檢查附屬至 CMenu所有的快顯功能表項目;因此,除非,複製功能表項目存在,則使用功能表列上的 CMenu 就已足夠。

// The code fragment below shows how to disable (and gray out) the 
// File\New menu item.
// NOTE: m_bAutoMenuEnable is set to FALSE in the constructor of 
// CMainFrame so no ON_UPDATE_COMMAND_UI or ON_COMMAND handlers are 
// needed, and CMenu::EnableMenuItem() will work as expected.

CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);

需求

Header: afxwin.h

顯示: