MFC訊息對映與處理

2021-05-23 05:02:38 字數 1191 閱讀 7812

今天我們主要了解一下mfc程式的訊息對映

mfc程式中訊息的種類:

(a)視窗訊息(window message):

這種訊息一般與視窗的內部運作有關,如建立視窗、繪製視窗和銷毀視窗等。

通常,訊息是從系統傳送到視窗,或從視窗傳送到視窗。形式通常為ww_***

(不包括ww_command)如:

wm_create,告訴視窗初始化自己。

wm_paint,告訴視窗繪製自己。

wm_mousemove,告訴視窗滑鼠移經它。

(b)由控制項和其它子視窗傳送給父視窗的ww_command訊息:

這些訊息中包括en_change通知碼,例如當使用者在編輯框中鍵如文字或進行修改時,

就會向系統傳送乙個帶en_change通知碼的wm_command訊息。

(c)來自使用者介面物件的ww_command訊息:

包括由選單、工具欄按鈕和快捷鍵這些使用者介面物件傳送的訊息。

說了這麼多是不是有些亂?我們需要記住的是訊息發生時,通過訊息對映表

找到相應的訊息響應函式對訊息進行處理!記住這三個巨集:

declare_message_map()//宣告訊息對映表

//訊息對映表

begin_message_map(cmyframewnd,cframewnd)

end_message_map()

//主視窗類

class cmyframewnd : public cframewnd

afx_msg void onlbuttondown(uint nflags, cpoint point)

declare_message_map()//宣告訊息對映表

}; //訊息對映表

begin_message_map(cmyframewnd,cframewnd)

on_wm_paint()//響應wm_paint訊息,將會呼叫onpaint()

on_wm_lbuttondown() //響應滑鼠左鍵按下訊息,將會呼叫

//onlbuttondown(uint nflags, cpoint point)

end_message_map()

bool initinstance()

}; 好了,請大家按照上篇的方法執行一下修改後的程式,是不是已經響應了滑鼠左鍵

按下的訊息。

MFC訊息對映與處理

declare message map 宣告訊息對映表 訊息對映表 begin message map cmyframewnd,cframewnd on wm paint 響應wm paint訊息 end message map 訊息響應函式 afx msg void onpaint 即處理訊息的函...

MFC訊息對映

run這個函式來建立和處理訊息迴圈 bool afxapi afxinternalpumpmessage return true 顯而易見,mfc中處理訊息也是利用了win32下的訊息處理 那麼還是這樣的結構 typedef struct tagmsg msg 有了這個概念之後我們知道,mfc通過訊...

MFC訊息對映與命令傳遞

declare message map巨集 在 mfc 幾乎每個標頭檔案下 類的最後一行宣告 都會有這麼幾行 生成的訊息對映函式 protected declare message map 我們看一看 declare message map到底為何物,檢視 declare message map原始...