CCmdUI 類別

備註

Microsoft 基礎類別(MFC)函式庫持續被支援。 不過,我們不再新增功能或更新文件。

只有在衍生類別中的ON_UPDATE_COMMAND_UI處理程式內CCmdTarget使用。

語法

class CCmdUI

成員

公用方法

名稱 描述
CCmdUI::ContinueRouting 告知命令路由機制繼續將目前訊息路由傳送至處理程序鏈結。
CCmdUI::Enable 啟用或停用此命令的使用者介面專案。
CCmdUI::SetCheck 設定此命令之使用者介面專案的檢查狀態。
CCmdUI::SetRadio 如同成員函 SetCheck 式,但在無線電群組上運作。
CCmdUI::SetText 設定此命令之使用者介面專案的文字。

公用資料成員

名稱 描述
CCmdUI::m_nID 使用者介面物件的標識碼。
CCmdUI::m_nIndex 使用者介面物件的索引。
CCmdUI::m_pMenu 指向物件所代表的 CCmdUI 功能表。
CCmdUI::m_pOther 指向傳送通知的窗口物件。
CCmdUI::m_pSubMenu 指向物件所 CCmdUI 表示的自主子功能表。

備註

CCmdUI 沒有基類。

當您的應用程式使用者下拉功能表時,每個功能表項都必須知道它是否應該顯示為已啟用或停用。 功能表命令的目標會藉由實作ON_UPDATE_COMMAND_UI處理程式來提供這項資訊。 針對您應用程式中的每一個命令使用者介面物件,請使用 [類別精靈 ] 或 [屬性 ] 視窗 (在 [類別檢視] 中,為每個處理程式建立訊息對應專案和函式原型。

當功能表下拉時,架構會搜尋並呼叫每個ON_UPDATE_COMMAND_UI處理程式、每個處理程式都會呼叫 CCmdUI 成員函式,例如 Enable 和 Check,然後架構會適當地顯示每個功能表項。

功能表項可以取代為控件列按鈕或其他命令使用者介面物件,而不需變更處理程式內的 ON_UPDATE_COMMAND_UI 程序代碼。

下表摘要說明對各種命令使用者介面專案的影響 CCmdUI成員函式。

使用者介面專案 啟用 SetCheck SetRadio SetText
功能表項目 啟用或停用 檢查或取消核取 使用點檢查 設定項目文字
工具列按鈕 啟用或停用 選取、取消選取或不確定 與 SetCheck 相同 (不適用)
狀態列窗格 讓文字可見或看不見 設定快顯或一般框線 與 SetCheck 相同 設定窗格文字
中的一般按鈕 CDialogBar 啟用或停用 核取或取消核取複選框 與 SetCheck 相同 設定按鈕文字
中的一般控制件 CDialogBar 啟用或停用 (不適用) (不適用) 設定視窗文字

如需使用此類別的詳細資訊,請參閱 如何更新使用者介面物件。

繼承階層架構

CCmdUI

需求

標題: afxwin.h

CCmdUI::ContinueRouting

呼叫這個成員函式,告知命令路由機制繼續將目前的訊息路由傳送至處理程式鏈結。

void ContinueRouting();

備註

這是進階成員函式,應該與傳回 FALSE 的ON_COMMAND_EX處理程式搭配使用。 如需詳細資訊,請參閱 技術附註 6。

CCmdUI::Enable

呼叫這個成員函式,以啟用或停用此命令的使用者介面專案。

virtual void Enable(BOOL bOn = TRUE);

參數

邦
TRUE 表示啟用專案,FALSE 將其停用。

範例

ON_UPDATE_COMMAND_UI(ID_FILE_SAVE, &CMyDoc::OnUpdateFileSave)

 

void CMyDoc::OnUpdateFileSave(CCmdUI *pCmdUI)
{
   // Enable the menu item if the file has been modified.
   pCmdUI->Enable(m_bModified);
}

CCmdUI::m_nID

由物件表示 CCmdUI 的功能表項、工具列按鈕或其他使用者介面物件的標識碼。

UINT m_nID;

CCmdUI::m_nIndex

由物件表示 CCmdUI 的功能表項、工具列按鈕或其他使用者介面物件的索引。

UINT m_nIndex;

CCmdUI::m_pMenu

物件所表示之選單的CMenu指標(類型為 CCmdUI ) 。

CMenu* m_pMenu;

備註

如果專案不是功能表,則為 NULL。

CCmdUI::m_pSubMenu

物件所CMenu表示之自主子選單的指標(類型為 CCmdUI ) 。

CMenu* m_pSubMenu;

備註

如果專案不是功能表,則為 NULL。 如果子功能表是彈出視窗, m_nID 包含彈出視窗中第一個專案的標識碼。 如需詳細資訊,請參閱 技術附註 21。

CCmdUI::m_pOther

傳送通知之視窗物件的指標(類型 CWnd為 ) ,例如工具或狀態列。

CWnd* m_pOther;

備註

如果專案是功能表或非物件, CWnd 則為 NULL。

CCmdUI::SetCheck

呼叫這個成員函式,將此命令的使用者介面專案設定為適當的檢查狀態。

virtual void SetCheck(int nCheck = 1);

參數

nCheck
指定要設定的檢查狀態。 如果為 0,則取消核取;如果為 1,則檢查;如果為 2,則設定不確定。

備註

此成員函式適用於功能表項和工具列按鈕。 不確定狀態僅適用於工具列按鈕。

CCmdUI::SetRadio

呼叫這個成員函式,將此命令的使用者介面專案設定為適當的檢查狀態。

virtual void SetRadio(BOOL bOn = TRUE);

參數

邦
TRUE 表示啟用專案;否則為 FALSE。

備註

此成員函式的運作方式類似 SetCheck,不同之處在於它會在做為無線電群組一部分的使用者介面項目上運作。 除非專案本身維護單選群組行為,否則取消核取群組中的其他專案並不自動。

CCmdUI::SetText

呼叫這個成員函式,以設定此命令的使用者介面項目文字。

virtual void SetText(LPCTSTR lpszText);

參數

lpszText
文字字串的指標。

範例

void CMyRichEditView::OnUpdateLineNumber(CCmdUI *pCmdUI)
{
   int nLine = GetRichEditCtrl().LineFromChar(-1) + 1;

   CString string;
   string.Format(_T("Line %d"), nLine);
   pCmdUI->Enable(TRUE);
   pCmdUI->SetText(string);
}

另請參閱

MFC 範例 MDI
階層架構圖表
CCmdTarget 類別