CCmdUI 類別
只有在衍生類別中的CCmdTarget
處理程式內ON_UPDATE_COMMAND_UI
使用。
語法
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
物件所表示之選單的CCmdUI
指標(類型為 CMenu
) 。
CMenu* m_pMenu;
備註
如果專案不是功能表,則為 NULL。
CCmdUI::m_pSubMenu
物件所CCmdUI
表示之自主子選單的指標(類型為 CMenu
) 。
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);
}