分享方式:


TN022:標準命令實作

注意

下列技術提示自其納入線上文件以來,未曾更新。 因此,有些程序和主題可能已過期或不正確。 如需最新資訊,建議您在線上文件索引中搜尋相關的主題。

本附注描述 MFC 2.0 所提供的標準命令實作。 請先閱讀 Technical Note 21 ,因為它描述用來實作許多標準命令的機制。

此描述假設瞭解 MFC 架構、API 和常見的程式設計實務。 說明記載和未記載的「僅限實作」API。 這不是開始瞭解 MFC 功能或如何進行程式設計的地方。 如需更多一般資訊,以及記載 API 的詳細資料,請參閱 Visual C++。

問題

MFC 會在標頭檔 AFXRES.H 中定義許多標準命令識別碼。 這些命令的架構支援會有所不同。 瞭解架構類別處理這些命令的位置和方式,不僅會說明架構在內部的運作方式,也會提供如何自訂標準實作的實用資訊,並教導您一些實作自己的命令處理常式的技術。

此技術注意事項的內容

每個命令識別碼都會在兩節中說明:

  • 標題:命令識別碼的符號名稱(例如,ID_FILE_SAVE),後面接著命令的用途(例如,以冒號分隔的「儲存目前檔」。

  • 一或多個段落,描述哪些類別會實作命令,以及預設實作的用途

大部分的預設命令實作都會在架構的基類訊息對應中預先連接。 有些命令實作需要衍生類別中的明確線路。 這些描述在「附注」底下。 如果您在 AppWizard 中選擇正確的選項,這些預設處理常式將會在產生的基本架構應用程式中為您連線。

命名規範

標準命令會遵循簡單的命名慣例,建議您盡可能使用。 大部分的標準命令都位於應用程式功能表列中的標準位置。 命令的符號名稱會以 「ID_」 開頭,後面接著標準快顯功能表名稱,後面接著功能表項目名稱。 符號名稱以大寫表示,具有底線斷詞符號。 對於沒有標準功能表項目名稱的命令,會從 「ID_」 開始定義邏輯命令名稱(例如,ID_NEXT_PANE)。

我們使用前置詞 「ID_」 來指出設計成系結至功能表項目、工具列按鈕或其他命令使用者介面物件的命令。 處理 「ID_」 命令的命令處理常式應該使用 MFC 命令架構的ON_COMMAND和ON_UPDATE_COMMAND_UI機制。

建議您針對未遵循命令架構的功能表項目使用標準 「IDM_」 前置詞,並需要功能表特定的程式碼來啟用和停用它們。 當然,功能表特定命令的數目應該很小,因為遵循 MFC 命令架構不僅讓命令處理常式功能更強大(因為它們會使用工具列),而且讓命令處理常式程式碼可重複使用。

識別碼範圍

如需 MFC 中使用識別碼範圍的詳細資訊,請參閱 Technical Note 20

MFC 標準命令落在0xE000範圍中,以0xEFFF。 請勿依賴這些識別碼的特定值,因為它們在未來版本的程式庫中可能會變更。

您的應用程式應該在0x8000範圍中定義其命令,以0xDFFF。

標準命令識別碼

針對每個命令識別碼,可以在檔案 PROMPTS 中找到標準消息行提示字串。鋼筋混凝土。 該功能表提示字元的字串識別碼必須與命令識別碼相同。

  • ID_FILE_NEW建立新的/空白檔。

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    CWinApp::OnFileNew 會根據應用程式中的檔範本數目,以不同的方式實作此命令。 如果只有一個 CDocTemplateCWinApp::OnFileNew 將會建立該類型的新檔,以及適當的框架和檢視類別。

    如果有一個 CDocTemplate 以上的 , CWinApp::OnFileNew 將會提示使用者輸入對話方塊(AFX_IDD_NEWTYPEDLG),讓他們選取要使用的檔案類型。 選取 CDocTemplate 的 會用來建立檔。

    ID_FILE_NEW的一個常見自訂是提供不同且更圖形化的檔案類型選擇。 在此情況下,您可以實作自己的 CMyApp::OnFileNew ,並將它放在訊息對應中,而不是 CWinApp::OnFileNew 。 不需要呼叫基類實作。

    另一個常見的ID_FILE_NEW自訂是提供個別的命令來建立每種類型的檔。 在此情況下,您應該定義新的命令識別碼,例如ID_FILE_NEW_CHART和ID_FILE_NEW_SHEET。

  • ID_FILE_OPEN開啟現有的檔。

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    CWinApp::OnFileOpen 具有非常簡單的呼叫 CWinApp::DoPromptFileName 實作, CWinApp::OpenDocumentFile 後面接著要開啟之檔案的檔案或路徑名稱。 實作 CWinApp 常式 DoPromptFileName 會顯示標準 FileOpen 對話方塊,並填入從目前檔範本取得的副檔名。

    ID_FILE_OPEN的一個常見自訂是自訂 [檔案][開啟] 對話方塊或新增其他檔案篩選。 建議的自訂方式是將預設實作取代為您自己的 FileOpen 對話方塊,並以檔的檔案或路徑名稱呼叫 CWinApp::OpenDocumentFile 。 不需要呼叫基類。

  • ID_FILE_CLOSE關閉目前開啟的檔。

    CDocument::OnFileClose 如果檔已修改,則呼叫 CDocument::SaveModified 以提示使用者儲存檔,然後呼叫 OnCloseDocument 。 所有結尾邏輯,包括終結檔,都是在 OnCloseDocument 常式中完成。

    注意

    ID_FILE_CLOSE與傳送至檔框架視窗的WM_CLOSE訊息或SC_CLOSE系統命令不同。 只有當這是顯示檔的最後一個框架視窗時,關閉視窗才會關閉檔。 關閉具有ID_FILE_CLOSE的檔不僅會關閉檔,也會關閉顯示檔的所有框架視窗。

  • ID_FILE_SAVE儲存目前的檔。

    實作會使用同時用於 OnFileSaveOnFileSaveAs 的協助程式常式 CDocument::DoSave 。 如果您儲存之前尚未儲存的檔(也就是,它沒有路徑名稱,如 FileNew 的情況),或從唯讀檔案讀取, OnFileSave 邏輯會像ID_FILE_SAVE_AS命令一樣運作,並要求使用者提供新的檔案名。 開啟檔案並執行儲存的實際程式是透過虛擬函式 OnSaveDocument 來完成。

    自訂ID_FILE_SAVE有兩個常見原因。 對於未儲存的檔,只需從使用者介面移除ID_FILE_SAVE功能表項目和工具列按鈕即可。 也請確定您永遠不會弄髒您的檔(也就是永遠不要呼叫 CDocument::SetModifiedFlag ),而且架構永遠不會造成檔儲存。 對於儲存到磁片檔案以外的某個位置的檔,請定義該作業的新命令。

    在 的案例 COleServerDoc 中,ID_FILE_SAVE用於檔案儲存(適用于一般檔)和檔案更新(適用于內嵌檔)。

    如果您的檔資料儲存在個別磁片檔案中,但您不想使用預設 CDocument 序列化實作,您應該覆寫 CDocument::OnSaveDocument 而不是 OnFileSave

  • ID_FILE_SAVE_AS將目前檔儲存在不同的檔案名下。

    實作 CDocument::OnFileSaveAs 會使用與 OnFileSave 相同的 CDocument::DoSave 協助程式常式。 如果檔在儲存之前沒有檔案名,命令 OnFileSaveAs 會像ID_FILE_SAVE一樣處理。 COleServerDoc::OnFileSaveAs 會實作邏輯來儲存一般檔資料檔案,或儲存伺服器檔,代表一些其他應用程式中內嵌的 OLE 物件做為個別檔案。

    如果您自訂ID_FILE_SAVE的邏輯,您可能想要以類似的方式自訂ID_FILE_SAVE_AS,或「另存新檔」作業可能不適用於您的檔。 如果不需要,您可以從功能表列移除功能表項目。

  • ID_FILE_SAVE_COPY_AS以新名稱儲存目前複本檔。

    實作 COleServerDoc::OnFileSaveCopyAs 與 非常類似 CDocument::OnFileSaveAs ,不同之處在于檔物件在儲存之後不會「附加」至基礎檔案。 也就是說,如果在儲存之前已「修改」記憶體內部檔,它仍會「已修改」。 此外,此命令不會影響儲存在檔中的路徑名稱或標題。

  • ID_FILE_UPDATE通知容器儲存內嵌檔。

    實作 COleServerDoc::OnUpdateDocument 只會通知應該儲存內嵌的容器。 然後容器會呼叫適當的 OLE API,以儲存內嵌的物件。

  • ID_FILE_PAGE_SETUP叫用應用程式特定的頁面設定/版面配置對話方塊。

    目前沒有此對話方塊的標準,而且架構沒有此命令的預設實作。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_FILE_PRINT_SETUP叫用標準列印安裝對話方塊。

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    此命令會叫用標準列印安裝對話方塊,讓使用者至少可自訂此檔的印表機和列印設定,或此應用程式中的所有檔。 您必須使用主控台來變更整個系統的預設印表機設定。

    CWinApp::OnFilePrintSetup具有建立 物件並呼叫 CWinApp::DoPrintDialog 實作函式的簡單實 CPrintDialog 作。 這會設定應用程式預設印表機設定。

    自訂此命令的常見需求是允許個別檔印表機設定,該設定應該儲存時與檔一起儲存。 若要這樣做,您應該在類別中 CDocument 新增訊息對應處理常式,以建立 CPrintDialog 物件、使用適當的印表機屬性初始化它(通常是 hDevMode hDevNames ),呼叫 CPrintDialog::DoModal ,然後儲存變更的印表機設定。 針對強固的實作,您應該查看 的實 CWinApp::DoPrintDialog 作來偵測錯誤,以及 CWinApp::UpdatePrinterSelection 處理合理的預設值,以及追蹤全系統的印表機變更。

  • ID_FILE_PRINT目前檔的標準列印

    注意

    您必須將此連線到 CView 衍生類別的訊息對應,才能啟用此功能。

    此命令會正確列印目前的檔,或更正確地啟動列印程式,這牽涉到叫用標準列印對話方塊和執行列印引擎。

    CView::OnFilePrint 會實作此命令和主要列印迴圈。 它會呼叫虛擬 CView::OnPreparePrinting ,以提示使用者顯示列印對話方塊。 然後,它會準備輸出 DC 以移至印表機、啟動列印進度對話方塊(AFX_IDD_PRINTDLG),並將逸出傳送 StartDoc 至印表機。 CView::OnFilePrint 也包含主頁面導向的列印迴圈。 針對每個頁面,它會呼叫虛擬 CView::OnPrepareDCStartPage 後面接著逸出,並呼叫該頁面的虛擬 CView::OnPrint 。 完成時,會呼叫虛擬 CView::OnEndPrinting ,並關閉列印進度對話方塊。

    MFC 列印架構的設計目的是以許多不同的方式進行列印和預覽列印。 您通常會找到適合任何頁面導向列印工作的各種 CView 可覆寫函式。 只有在使用印表機進行非頁面導向輸出的應用程式的情況下,才需要取代ID_FILE_PRINT實作。

  • ID_FILE_PRINT_PREVIEW輸入目前檔的預覽列印模式。

    注意

    您必須將此連線到 CView 衍生類別的訊息對應,才能啟用此功能。

    CView::OnFilePrintPreview 呼叫記載的協助程式函式 CView::DoPrintPreview ,以啟動預覽列印模式。 CView::DoPrintPreview 是預覽列印迴圈的主要引擎,就像列印迴圈的主要引擎一樣 OnFilePrint

    將不同的參數傳遞至 DoPrintPreview ,即可以各種方式自訂預覽列印作業。 請參閱 Technical Note 30 ,其中討論預覽列印的一些詳細資料,以及如何自訂。

  • ID_FILE_MRU_FILE1...FILE16 檔案 MRU 清單 的命令識別碼範圍。

    CWinApp::OnUpdateRecentFileMenu 是更新命令 UI 處理常式,這是ON_UPDATE_COMMAND_UI機制的進階用法之一。 在您的功能表資源中,您只需要定義具有識別碼ID_FILE_MRU_FILE1的單一功能表項目。 該功能表項目一開始會保持停用狀態。

    隨著 MRU 清單的成長,會將更多功能表項目新增至清單。 標準 CWinApp 實作預設為四個最近使用檔案的標準限制。 您可以使用較大的或較小的值來呼叫 CWinApp::LoadStdProfileSettings ,以變更預設值。 MRU 清單會儲存在應用程式的 中。INI 檔案。 如果您呼叫 LoadStdProfileSettings ,則會在應用程式的 InitInstance 函式中載入清單,並在應用程式結束時儲存。 MRU 更新命令 UI 處理常式也會將絕對路徑轉換成相對路徑,以便顯示在檔案功能表上。

    CWinApp::OnOpenRecentFile 是執行實際命令的ON_COMMAND處理常式。 它只會從 MRU 清單取得檔案名並呼叫 CWinApp::OpenDocumentFile ,這會執行開啟檔案並更新 MRU 清單的所有工作。

    不建議自訂此命令處理常式。

  • ID_EDIT_CLEAR清除目前的選取範圍

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 使用 CEdit::Clear 提供此命令的實作。 如果沒有目前的選取範圍,命令就會停用。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_CLEAR_ALL清除整份檔。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    如果您選擇實作此命令,建議您使用此命令識別碼。 如需範例實作,請參閱 MFC 教學課程範例 SCRIBBLE

  • ID_EDIT_COPY將目前的選取範圍複製到剪貼簿。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 提供此命令的實作,這個命令會使用 CEdit::Copy 將目前選取的文字複製到剪貼簿做為CF_TEXT。 如果沒有目前的選取範圍,命令就會停用。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_CUT剪下目前選取範圍至剪貼簿。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 提供此命令的實作,這個命令會使用 CEdit::Cut 將目前選取的文字剪下為剪貼簿CF_TEXT。 如果沒有目前的選取範圍,命令就會停用。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_FIND開始尋找作業,會顯示無模式尋找對話方塊。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 提供此命令的實作,它會呼叫實作協助程式函 OnEditFindReplace 式,以在私用實作變數中儲存先前的尋找/取代設定。 類別 CFindReplaceDialog 可用來管理無強制回應對話方塊,以提示使用者。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_PASTE插入目前的剪貼簿內容。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 提供此命令的實作,這個命令會複製目前剪貼簿資料,以使用 CEdit::Paste 取代選取的文字。 如果剪貼簿中沒有 CF_TEXT ,命令就會停用。

    COleClientDoc 只提供此命令的更新命令 UI 處理常式。 如果剪貼簿不包含可內嵌的 OLE 專案/物件,命令將會停用。 您必須負責撰寫實際命令的處理常式,以執行實際貼上。 如果您的 OLE 應用程式也可以貼上其他格式,您應該在檢視或檔中提供自己的更新命令 UI 處理常式(也就是命令目標路由中的某 COleClientDoc 處)。

    如果您選擇實作此命令,建議您使用此命令識別碼。

    若要取代標準 OLE 實作,請使用 COleClientItem::CanPaste

  • ID_EDIT_PASTE_LINK從目前的剪貼簿內容插入連結。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    COleDocument 只提供此命令的更新命令 UI 處理常式。 如果剪貼簿未包含可連結的 OLE 專案/物件,命令將會停用。 您必須負責撰寫實際命令的處理常式,以執行實際貼上。 如果您的 OLE 應用程式也可以貼上其他格式,您應該在檢視或檔中提供自己的更新命令 UI 處理常式(也就是命令目標路由中的某 COleDocument 處)。

    如果您選擇實作此命令,建議您使用此命令識別碼。

    若要取代標準 OLE 實作,請使用 COleClientItem::CanPasteLink

  • ID_EDIT_PASTE_SPECIAL使用選項插入目前的剪貼簿內容。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。 MFC 未提供此對話方塊。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_REPEAT重複最後一個作業。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 提供此命令的實作,以重複最後一個尋找作業。 會使用最後一個尋找的私人實作變數。 如果無法嘗試尋找,命令就會停用。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_REPLACE開始取代作業,會顯示無模式取代對話方塊。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 提供此命令的實作,它會呼叫實作協助程式函 OnEditFindReplace 式,以在私用實作變數中儲存先前的尋找/取代設定。 類別 CFindReplaceDialog 可用來管理提示使用者的無強制回應對話方塊。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_SELECT_ALL選取整個檔。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 提供此命令的實作,這個命令會選取檔中的所有文字。 如果沒有要選取的文字,命令就會停用。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_UNDO復原最後一個作業。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    CEditView 使用 CEdit::Undo 提供此命令的實作。 如果 CEdit::CanUndo 傳回 FALSE,則會停用命令。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_EDIT_REDO重做最後一個作業。

    目前沒有此命令的標準實作。 您必須針對每個 CView 衍生類別實作此專案。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_WINDOW_NEW開啟使用中檔的另一個視窗。

    CMDIFrameWnd::OnWindowNew 使用目前檔的檔範本來建立另一個框架,其中包含目前檔的另一個檢視,以實作這項強大的功能。

    就像大部分的多個文檔介面 (MDI) 視窗功能表命令一樣,如果沒有使用中的 MDI 子視窗,命令就會停用。

    不建議自訂此命令處理常式。 如果您想要提供建立其他檢視或框架視窗的命令,您最好能發明自己的命令。 您可以從 複製程式碼 CMDIFrameWnd::OnWindowNew ,並將其修改為您喜好的特定框架和檢視類別。

  • ID_WINDOW_ARRANGE排列 MDI 視窗底部的圖示。

    CMDIFrameWnd 在實作協助程式函式 OnMDIWindowCmd 中實作此標準 MDI 命令。 此協助程式會將命令識別碼對應至 MDI Windows 訊息,因此可以共用許多程式碼。

    如同大部分的 MDI 視窗功能表命令,如果沒有作用中的 MDI 子視窗,命令就會停用。

    不建議自訂此命令處理常式。

  • ID_WINDOW_CASCADE Cascades 視窗,使其重迭。

    CMDIFrameWnd 在實作協助程式函式 OnMDIWindowCmd 中實作此標準 MDI 命令。 此協助程式會將命令識別碼對應至 MDI Windows 訊息,因此可以共用許多程式碼。

    如同大部分的 MDI 視窗功能表命令,如果沒有作用中的 MDI 子視窗,命令就會停用。

    不建議自訂此命令處理常式。

  • ID_WINDOW_TILE_HORZ水準磚視窗。

    此命令實作 CMDIFrameWnd 的方式就像ID_WINDOW_CASCADE一樣,不同 MDI Windows 訊息會用於作業。

    您應該為應用程式挑選預設磚方向。 您可以將視窗 「Tile」 功能表項目的識別碼變更為 [ID_WINDOW_TILE_HORZ] 或 [ID_WINDOW_TILE_VERT]。

  • ID_WINDOW_TILE_VERT垂直磚視窗。

    此命令實作 CMDIFrameWnd 的方式就像ID_WINDOW_CASCADE一樣,不同 MDI Windows 訊息會用於作業。

    您應該為應用程式挑選預設磚方向。 您可以將視窗 「Tile」 功能表項目的識別碼變更為 [ID_WINDOW_TILE_HORZ] 或 [ID_WINDOW_TILE_VERT]。

  • ID_WINDOW_SPLIT要分割的鍵盤介面。

    CView 會處理實作的 CSplitterWnd 此命令。 如果檢視是分割器視窗的一部分,此命令會委派給實作函式 CSplitterWnd::DoKeyboardSplit 。 這會將分隔器放在允許鍵盤使用者分割或取消分割視窗的模式中。

    如果檢視不在分割器中,則會停用此命令。

    不建議自訂此命令處理常式。

  • ID_APP_ABOUT叫用 [關於] 對話方塊。

    應用程式 [關於] 方塊沒有標準實作。 預設的 AppWizard 建立應用程式會為您的應用程式建立自訂對話方塊類別,並將其作為 [關於] 方塊使用。 AppWizard 也會撰寫可處理此命令並叫用對話方塊的簡單命令處理常式。

    您幾乎一律會實作此命令。

  • ID_APP_EXIT結束應用程式。

    CWinApp::OnAppExit 將WM_CLOSE訊息傳送至應用程式主視窗,以處理此命令。 實作會 CFrameWnd 處理應用程式的標準關機(提示檔案等等)。

    不建議自訂此命令處理常式。 建議覆寫 CWinApp::SaveAllModifiedCFrameWnd 關閉邏輯。

    如果您選擇實作此命令,建議您使用此命令識別碼。

  • ID_HELP_INDEX列出 的 [說明] 主題。HLP 檔案。

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    CWinApp::OnHelpIndex 藉由簡單呼叫 CWinApp::WinHelp 來處理此命令。

    不建議自訂此命令處理常式。

  • ID_HELP_USING顯示如何使用說明的說明。

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    CWinApp::OnHelpUsing 藉由簡單呼叫 CWinApp::WinHelp 來處理此命令。

    不建議自訂此命令處理常式。

  • ID_CONTEXT_HELP輸入 SHIFT-F1 說明模式。

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    CWinApp::OnContextHelp 藉由設定說明模式資料指標、輸入強制回應迴圈,並等候使用者選取視窗以取得說明,以處理此命令。 如需 MFC 說明實作的詳細資訊,請參閱 技術附注 28

    不建議自訂此命令處理常式。

  • ID_HELP提供目前內容的說明

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    CWinApp::OnHelp 取得目前應用程式內容的正確說明內容,以處理此命令。 這會處理簡單的 F1 說明、訊息方塊的說明等等。 如需 MFC 說明實作的詳細資訊,請參閱 技術附注 28

    不建議自訂此命令處理常式。

  • ID_DEFAULT_HELP 顯示內容的預設說明

    注意

    您必須將此連線到 CWinApp 衍生類別的訊息對應,才能啟用此功能。

    此命令通常對應至 CWinApp::OnHelpIndex

    如果需要預設說明與說明索引之間的差異,則可以提供不同的命令處理常式。

  • ID_NEXT_PANE移至下一個窗格

    CView 會處理實作的 CSplitterWnd 此命令。 如果檢視是分割器視窗的一部分,此命令會委派給實作函式 CSplitterWnd::OnNextPaneCmd 。 這會將作用中檢視移至分隔器中的下一個窗格。

    如果檢視不在分割器中,或沒有下一個窗格可移至,則會停用此命令。

    不建議自訂此命令處理常式。

  • ID_PREV_PANE移至上一個窗格

    CView 會處理實作的 CSplitterWnd 此命令。 如果檢視是分割器視窗的一部分,此命令會委派給實作函式 CSplitterWnd::OnNextPaneCmd 。 這會將作用中檢視移至分割器中的上一個窗格。

    如果檢視不在分割器中,或沒有上一個窗格可移至,則會停用此命令。

    不建議自訂此命令處理常式。

  • ID_OLE_INSERT_NEW插入新的 OLE 物件

    目前沒有此命令的標準實作。 您必須為衍生類別實作 CView 這個 ,才能在目前選取範圍中插入新的 OLE 專案/物件。

    所有 OLE 用戶端應用程式都應該實作此命令。 AppWizard,使用 OLE 選項,會在檢視類別中建立 的基本架構實 OnInsertObject 作,您必須完成。

    如需此命令的完整實作,請參閱 MFC OLE 範例 OCLIENT 範例。

  • ID_OLE_EDIT_LINKS編輯 OLE 連結

    COleDocument 使用標準 OLE 連結對話方塊的 MFC 提供的實作來處理此命令。 這個對話方塊的實作是透過 COleLinksDialog 類別存取。 如果目前的檔未包含任何連結,則會停用命令。

    不建議自訂此命令處理常式。

  • ID_OLE_VERB_FIRST...LAST OLE 動詞的識別碼範圍

    COleDocument 會針對目前選取的 OLE 專案/物件所支援的動詞,使用此命令識別碼範圍。 這必須是範圍,因為指定的 OLE 專案/物件類型可以支援零個或多個自訂動詞。 在應用程式的功能表中,您應該有一個具有ID_OLE_VERB_FIRST識別碼的功能表項目。 執行程式時,功能表會以適當的功能表動詞描述來更新(或具有許多動詞的快顯功能表)。 OLE 功能表的管理是由 處理 AfxOleSetEditMenu ,在此命令的更新命令 UI 處理常式中完成。

    沒有明確的命令處理常式可處理此範圍中的每個命令識別碼。 COleDocument::OnCmdMsg 會覆寫以捕捉此範圍中的所有命令識別碼、將其轉換成以零為起始的動詞編號,然後啟動該動詞的伺服器(使用 COleClientItem::DoVerb )。

    不建議自訂或使用此命令識別碼範圍。

  • ID_VIEW_TOOLBAR切換工具列開啟和關閉

    CFrameWnd 會處理此命令和 update-command UI 處理常式,以切換工具列的可見狀態。 工具列必須是框架的子視窗,且子視窗識別碼為 AFX_IDW_TOOLBAR。 命令處理常式實際上會切換工具列視窗的可見度。 CFrameWnd::RecalcLayout 是用來重新繪製框架視窗及其新狀態的工具列。 當工具列可見時,update-command UI 處理常式會檢查功能表項目。

    不建議自訂此命令處理常式。 如果您想要新增其他工具列,您會想要複製和修改此命令的命令處理常式和 update-command UI 處理常式。

  • ID_VIEW_STATUS_BAR切換狀態列開啟和關閉

    此命令實作 CFrameWnd 的方式就像ID_VIEW_TOOLBAR一樣,但使用不同的子視窗識別碼(AFX_IDW_STATUS_BAR)。

僅限更新的命令處理常式

數個標準命令識別碼會當做狀態列的指標使用。 這些程式會使用相同的更新命令 UI 處理機制,在應用程式閒置期間顯示其目前視覺狀態。 由於使用者無法選取它們(也就是您無法推送狀態列窗格),因此對於這些命令識別碼具有ON_COMMAND處理常式並無意義。

  • ID_INDICATOR_CAPS:CAP 鎖定指標。

  • ID_INDICATOR_NUM:NUM 鎖定指標。

  • ID_INDICATOR_SCRL:SCRL 鎖定指標。

  • ID_INDICATOR_KANA:KANA 鎖定指示器(僅適用于日本系統)。

這三者都是在 中 CFrameWnd::OnUpdateKeyIndicator 實作的,實作協助程式會使用命令識別碼對應至適當的虛擬金鑰。 一般實作會啟用或停用物件,視目前是否鎖定適當的虛擬金鑰而定,啟用或停用物件(針對已停用的狀態窗格 = 沒有文字 CCmdUI )。

不建議自訂此命令處理常式。

  • ID_INDICATOR_EXT:EXTended 選取指標。

  • ID_INDICATOR_OVR :OVeRstrike 指標。

  • ID_INDICATOR_REC :RECording 指標。

目前沒有這些指標的標準實作。

如果您選擇實作這些指標,建議您使用這些指標識別碼,並維護狀態列中指標的順序(也就是,依下列順序:EXT、CAP、NUM、SCRL、OVR、REC)。

另請參閱

依編號顯示的技術提示
依分類區分的技術提示