CCmdTarget 是 MFC 命令路由 的基底類別,意為「命令的目標」。它實作了 OnCmdMsg 虛擬函式,構成命令訊息傳遞鏈:
View → Frame → Document → Application → 系統
DECLARE_MESSAGE_MAP / BEGIN_MESSAGE_MAP 將命令 ID 對應到處理函式。CCmdTarget::OnCmdMsg 依序嘗試自身、基類、外部目標處理命令。ON_UPDATE_COMMAND_UI 讓目標決定工具列/選單項目啟用狀態。CCmdTarget 本身不建立執行緒。 MFC 應用程式預設為單一 UI 執行緒(主執行緒),所有命令訊息皆在該執行緒的訊息迴圈中分派。若需背景運算:
AfxBeginThread 或 std::thread。PostMessage 回主執行緒)。CCmdTarget)仍駐留於主執行緒。
CObject
└─ CCmdTarget
├─ CWnd (視窗、控制項)
├─ CDocument (文件)
├─ CWinApp (應用程式)
└─ CFrameWnd (框架視窗)
深度原理請參考:MFC 命令路由機制深度解析