備註
自第一次包含在在線文件中以來,尚未更新下列技術附注。 因此,某些程式和主題可能已過期或不正確。 如需最新信息,建議您搜尋在線檔索引中感興趣的主題。
本附註描述 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的範圍內定義其命令。
標準命令標識碼
針對每個命令ID,可以在檔案 PROMPTS.RC 中找到標準消息行提示字串。 該菜單提示的字串 ID 必須與命令 ID 相同。
ID_FILE_NEW建立新的/空白檔。
備註
您必須將此連接到
CWinApp衍生類別的消息映射,才能啟用此功能。CWinApp::OnFileNew會根據應用程式中的檔範本數目,以不同的方式實作此命令。 如果只有一個CDocTemplate,CWinApp::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儲存目前的檔。
實作會使用同時用於
CDocument::DoSave和OnFileSave的協助程式例程OnFileSaveAs。 如果您儲存之前尚未儲存的檔(也就是,它沒有路徑名稱,如 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的實作會使用與CDocument::DoSave相同的OnFileSave輔助例程。 如果檔在儲存之前沒有檔名,命令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具有一個非常簡單的實作,此實作會建立CPrintDialog物件並呼叫CWinApp::DoPrintDialog實作函式。 這會設定應用程式預設印表機設定。自定義此命令的常見需求是允許個別檔印表機設定,該設定應該儲存時與檔一起儲存。 若要這樣做,您應該在類別中
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::OnPrepareDC,然後接著進行StartPage的逸出,最後呼叫該頁面的虛擬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 檔案中。 如果您呼叫InitInstance,則會在應用程式的LoadStdProfileSettings函式中載入清單,並在應用程式結束時儲存。 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 排列視窗,使其重疊。
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::SaveAllModified或CFrameWnd的關閉邏輯。如果您選擇實作此命令,建議您使用此命令標識符。
ID_HELP_INDEX 列出來自 .HLP 檔案的說明主題。
備註
您必須將此連接到
CWinApp衍生類別的消息映射,才能啟用此功能。CWinApp::OnHelpIndex藉由簡單呼叫CWinApp::WinHelp來處理此命令。不建議自定義此命令處理程式。
顯示如何使用「說明」功能的幫助。
備註
您必須將此連接到
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是用來重新繪製框架視窗及其新狀態的工具列。 當工具列可見時,更新命令的 UI 處理程式會檢查功能表項。不建議自定義此命令處理程式。 如果您希望新增額外的工具列,您需要複製並修改該命令的指令處理程式和更新命令 UI 處理程式。
ID_VIEW_STATUS_BAR切換狀態列開啟和關閉
此命令在
CFrameWnd中的實作方式與 ID_VIEW_TOOLBAR 相同,只是使用了不同的子視窗識別碼(AFX_IDW_STATUS_BAR)。
Update-Only 命令處理程式
數個標準命令標識碼會當做狀態列的指標使用。 這些程式會使用相同的更新命令 UI 處理機制,在應用程式閑置期間顯示其目前視覺狀態。 由於使用者無法選取它們(也就是您無法按下狀態列面板),因此對於這些命令 ID 具有 ON_COMMAND 處理函式並無意義。
ID_INDICATOR_CAPS:Caps Lock 鎖定指標。
ID_INDICATOR_NUM:NUM 鎖定指示器。
ID_INDICATOR_SCRL:SCRL 鎖定指標。
ID_INDICATOR_KANA:KANA 鎖定指示器(僅適用於日本系統)。
這三者都在CFrameWnd::OnUpdateKeyIndicator中實作,該輔助程式會使用命令 ID 對應至適當的虛擬密鑰。 常見的實作方式會根據目前適當的虛擬密鑰是否鎖定來啟用或停用 CCmdUI 對象。如果狀態窗格被停用,則不顯示文字。
不建議自定義此命令處理程式。
ID_INDICATOR_EXT:擴展選取指標。
ID_INDICATOR_OVR :OVeRstrike 指標。
ID_INDICATOR_REC :錄製指標。
目前沒有這些指標的標準實作。
如果您選擇實作這些指標,建議您使用這些指標標識符,並維護狀態列中指標的順序(也就是,依下列順序:EXT、CAP、NUM、SCRL、OVR、REC)。