命令路由
使用命令的責任僅限於在命令與其處理常式函式之間建立訊息對應連線,這是您使用 MFC 類別精靈 的工作。 您也必須撰寫命令處理常式的程式碼。
Windows 訊息通常會傳送至主框架視窗,但命令訊息會接著路由傳送至其他物件。 此架構會將命令路由傳送通過標準順序的命令目標物件,其中一個物件應該會有該命令的處理常式。 每個命令目標物件會檢查其訊息對應,以確認是否可以處理傳入訊息。
不同的命令目標類別會在不同時間檢查自己的訊息對應。 一般而言,一個類別會將命令路由傳送至一些其他物件,讓它們有機會優先處理命令。 如果這些物件不會處理命令,則原始類別會檢查自己的訊息對應。 然後,如果其本身無法提供處理常式,則可能會將命令路由傳送至更多命令目標。 以下的 標準命令路由 表格顯示每個類別如何建構此順序。 命令目標路由傳送命令的一般順序為︰
至其目前作用中的子命令目標物件。
至其本身。
至其他命令目標。
相較于處理常式回應命令時所執行的動作,此路由機制的成本很低。 請記住,只有在使用者與使用者介面物件互動時,此架構才會產生命令。
標準命令路由
當此類型的物件收到命令時。 . . | 它會依照下列順序,提供機會給自己及其他命令目標物件來處理命令︰ |
---|---|
MDI 框架視窗 (CMDIFrameWnd ) |
1. 使用中 CMDIChildWnd 2. 此框架視窗 3. 應用程式 ( CWinApp 物件) |
文件框架視窗 (CFrameWnd 、 CMDIChildWnd ) |
1. 使用中檢視 2. 此框架視窗 3. 應用程式 ( CWinApp 物件) |
檢視 | 1.此檢視 2.附加至檢視的檔 |
文件 | 1.本檔 2.附加至檔的檔範本 |
對話方塊 | 1.此對話方塊 2.擁有對話方塊的視窗 3. 應用程式 ( CWinApp 物件) |
在上表第二欄的編號項目提到其他物件 (例如文件) 的情況下,請參閱第一欄的對應項目。 例如,當您在第二欄中讀到「檢視將命令轉送至其文件」時,請參閱第一欄的「文件」項目以進一步路由傳送。