MFC中的訊息處理函式

2022-09-13 18:03:13 字數 1146 閱讀 6941

1、在windows api程式設計中,直接在訊息處理函式中編寫wm_paint處理**。

2、在mfc中,cframewnd的訊息處理過程在**呢?mfc時如何將訊息處理函式和視窗關聯起來的。

在cframewnd::createex中,呼叫precreatewindows來註冊視窗。

afxdefregisterclass(afx_wndframeorview_reg):註冊乙個固定的視窗類,這個視窗類中的訊息處理過程時乙個固定的訊息處理過程,

真正將我門的訊息處理過程cwnd::windowproc和我們的視窗進行關聯的**在afxhookwindowcreate(this)函式中。

cframewnd::createex中,呼叫afxhookwindowcreate(this),將視窗類cframewnd::windowproc的訊息處理過程和cframewnd視窗進行關聯。

afxhookwindowcreate(this)

::setwindowshookex(wh_cbt, _afxcbtfilterhook, null, ::getcurrentthreadid());

找到鉤子函式,_afxcbtfileterhook,在鉤子函式中下乙個斷點。

在_afxcbtfileterhook中,呼叫setwindowlongptr(hwnd, gwlp_wndproc, (dword_ptr)afxwndproc);

將我們建立的視窗pframe和afxwndproc視窗處理過程和關聯(afxwndproc是mfc中的乙個統一訊息處理過程)

afxwndproc呼叫afxcallwndproc(pwnd, hwnd, nmsg, wparam, lparam);

afxcallwndproc(pwnd, hwnd, nmsg, wparam, lparam)呼叫pwnd->windowproc(nmsg, wparam, lparam);

3、cframewnd是乙個視窗,那麼這個類中,包含了訊息處理函式,這個訊息處理函式繼承自cwnd。

4、在cwnd中存在以下的這個函式,該函式就是訊息處理函式。

virtual

lresult windowproc(

uint message,

wparam wparam,

lparam lparam);

MFC程式中訊息以及函式的處理順序

mfc應用程式中處理訊息的順序 1.afxwndproc 該函式負責接收訊息,找到訊息所屬的cwnd物件,然後呼叫afxcallwndproc 2.afxcallwndproc 該函式負責儲存訊息 儲存的內容主要是訊息識別符號和訊息引數 用程式以後使用,然後呼叫windowproc 函式 3.win...

MFC中訊息迴圈處理的幾個函式之間的區別

1 函式getmessage 是從呼叫執行緒的 訊息佇列 裡取得乙個訊息並將其放於指定的結構。此函式可取得與指定視窗聯絡的訊息和由postthreadmesssge寄送的執行緒訊息。此函式接收一定範圍的訊息值。getmessage不接收屬於其他執行緒或 應用程式 的訊息。獲取訊息成功後,執行緒將從 ...

MFC 滑鼠訊息處理

1.滑鼠事件和滑鼠訊息 1 滑鼠和游標的區別 滑鼠是指實體滑鼠,而游標就是滑鼠在螢幕上的表示,因此在程式設計中通常稱為游標 2 滑鼠事件 windows中分為是三種,按下或釋放滑鼠 雙擊滑鼠 移動滑鼠 3 上述三種滑鼠實際那將觸發滑鼠訊息,而滑鼠訊息分為兩類,一類是客戶區滑鼠訊息,另一類是非客戶區滑...