MFC 基礎篇 第三章 MFC訊息對映機制

2022-07-22 17:30:32 字數 1195 閱讀 4245

windows應用程式的輸入由windows系統以訊息的形式傳送給應用程式的視窗.這些視窗通過視窗過程來接收和處理訊息,然後把控制權還給windows

從訊息的傳送途徑上看,訊息分兩種:佇列訊息和非佇列訊息

佇列訊息送到系統訊息佇列,然後到執行緒訊息佇列,最後送給目的視窗過程

非佇列訊息直接送給目的視窗過程

windows維護乙個系統訊息佇列(system message queue),每個gui執行緒有乙個執行緒訊息佇列(thread message queue)

除了鍵盤 滑鼠訊息 wm_paint wm_timer wm_quit訊息以外,其他訊息大多數都是非佇列訊息

從****來看,可以分為系統定義的訊息和應用程式定義的訊息

typedef struct tagmsgmsg;

while (getmessage(&msg, null, null, null))

return msg.wparam.

應用程式通過視窗過程來處理訊息

lresult callback mainwndproc{

hwnd hwnd,    // 視窗控制代碼

uint msg,      // 訊息表示 

wparam wparam,  // 訊息引數

lparam lparam   // 訊息引數

mfc主要處理三類訊息:

(1) windows訊息 : 以 wm_ 開頭的訊息,除了 wm_command 訊息例外

(2) 控制通知訊息 : 是控制子視窗送給父視窗的 wm_command 通知訊息

(3) 命令訊息 : 這是來自選單 工具條按鈕 加速鍵等使用者介面物件的 wm_command 通知訊息

在類的標頭檔案裡面,增加訊息處理函式的宣告之外,新增一行宣告訊息對映的巨集定義 declare_message_map

在類的原始檔裡面,實現訊息處理函式之外,新增 begin_message_map() ... end_message_map()

第三章 MFC框架程式剖析

mfc中類名以字母c開頭,然後加上工程名,再加上字尾。它們caboutdlg,cmainfram,ctestview分別派生於 cdialog,cframewnd,cview,而這三個派生於cwnd類 設計和註冊視窗類 視窗類的註冊 是由afxenddeferregisterclass函式完成的,該...

第三章 網頁基礎篇

建立乙個顯示當前日期和時間的網頁。這是乙個不錯的 動態 網頁範例,因為該頁面的內容不是靜態的。相反,其內容是隨著計算 本例中是對當前時間的計算 的結果而變化的。這個簡單的範例既不涉及資料庫,也不需要任何使用者輸入,僅輸出伺服器的內部時鐘。實現 1 描述 urlconf 就像是 django 所支撐 ...

第三章 視窗和訊息

進行window成學設計實際上是物件導向程式設計,桌面上最明顯的視窗就是應用程式視窗。這些視窗含有顯示程式名稱的標題列 選單甚至可能還有工具列和滾動條。另一類視窗是對話方塊,它可以有標題列也可以沒有標題列。裝飾對話方塊表面的還有各式各樣的按鍵 單選按鈕 核取方塊 清單方塊 滾動條和文字輸入區域。其中...