windows程式的本質是藉著訊息來維持脈動。每個訊息都有乙個**,並以wm_開頭的常量表示。來自選單和工具欄者,都以wm_command表示,引數wparam記錄訊息的發出者。
mfc的訊息分為三大類,命令訊息(wm_command),凡派生自ccmdtarget的類都有資格接收命令訊息。除wm_command外,所有以wm_開頭的都屬於標準訊息,派生自cwnd的類可接收此類訊息。由控制項產生的訊息,為的是向父視窗傳遞某種情況,這種訊息是以wm_command形式呈現。
mfc通過三個巨集來進行訊息對映,declare_message_map(),begin_message_map(class,baseclass),end_message_map()。標準的訊息並不需要我們指定處理函式名稱,因為處理函式名稱也是標準的,如wm_pain會被自動對映到onpaint函式中,前提是呼叫on_wm_paint()巨集。
整個的訊息對映網通過begin_message_map()的第二個引數進行連線,因此可以跳過類繼承層次中的某個節點。
在mfc中,多有訊息都將被推送到afxwndproc中,這裡作為訊息對映的起點。一般訊息只能沿著繼承層次結構進行處理,command訊息和notify會進行特殊處理,因為它們可能需要轉個彎。oncmdmsg用來分配命令訊息的傳遞路徑。命令訊息的路徑根據類中oncmdmsg函式的不同實現而呈現出不同的傳遞路徑。
在mfc中可以通過更簡單的方式維護ui物件的狀態,通過新增update_command_ui訊息實現命令ui物件的狀態更新。
26 深入淺出MFC學習筆記,訊息對映與命令傳遞
1 mfc把訊息三大類 1 命令訊息 wm command 凡由 ui 物件產生的訊息都是這種命令訊息,可能來自 選單或加速鍵或工具欄 sdk 程式主要靠訊息的 wparam 辨識之,mfc程式則主要靠選單項目的識別碼 menu id 辨識之,兩者其實是相同的。凡衍生自ccmdtarget 的類別,...
26 深入淺出MFC學習筆記,訊息對映與命令傳遞
1 mfc 把訊息三大類 1 命令訊息 wm command 凡由 ui 物件產生的訊息都是這種命令訊息,可能來自 選單或加速鍵或工具欄 sdk 程式主要靠訊息的 wparam 辨識之,mfc程式則主要靠選單項目的識別碼 menu id 辨識之,兩者其實是相同的。凡衍生自ccmdtarget 的類別...
深入淺出MFC學習筆記 訊息
本章將會對mfc的訊息對映和 命令傳遞機制做深入 mfc規定了訊息傳遞的路線,訊息會按照這個路線傳遞下去,找不到歸宿的話就交給defwindowproc。在產生視窗之前,如果我們在建立視窗時指定的視窗類為null時,mfc會自動註冊五個預設的視窗類,每個視窗類有自己的視窗函式。不同視窗得到的訊息應該...