OnWndMsg函式的處理過程
在MFC中, OnWndMsg函式的處理過程如下:
1)首先,判斷訊息是否有訊息響應函式,例如OnLButtonDown()處理“左鍵按下”這一訊息。
2)判斷方法是在相應的視窗類中查詢所需的訊息響應函式。這裡以MFC 的工程Draw為例,OnWndMsg會在CDrawTest.h中查詢,看看DECLARE_MESSAGE_MAP()之上,
兩個afx_msg註釋巨集之間是否有相應的訊息響應函式的原型宣告,如下:
//CDrawTest.h
protected:
//{{AFX_MSG(CDrawView)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//函式OnLButtonDown()的原型宣告
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
接著,再到CDrawView.cpp中,看看BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()這兩個巨集之間是否有相應的訊息對映巨集,如下:
// CDrawView.cpp
IMPLEMENT_DYNCREATE(CDrawView, CView)
BEGIN_MESSAGE_MAP(CDrawView, CView)
//{{AFX_MSG_MAP(CDrawView)
ON_WM_LBUTTONDOWN() //函式OnLButtonDown()在訊息對映巨集之中
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
3)如果通過1)、2)步驟,找到了訊息響應函式,那麼接著就會呼叫該響應函式,對訊息進行處理。
如果子類中沒有找到訊息響應函式,那麼就就給基類處理。
4)通過以上步驟,MFC就實現了具體的訊息對映,從而完成對訊息的響應。
5)函式OnLButtonDown()的實現:
相關文章
- 【分享】Delphi的內部字串處理函式/過程不完全列表字串函式
- oracle處理SQL的過程OracleSQL
- JDBC【PreparedStatment、批處理、處理二進位制、自動主鍵、呼叫儲存過程、函式】JDBC儲存過程函式
- 磁碟處理函式函式
- 字元處理函式字元函式
- oracle函式大全-字串處理函式Oracle函式字串
- 異常處理過程
- SQL語句的處理過程SQL
- 分散裝運處理的過程
- 儲存過程 函式儲存過程函式
- 陣列處理函式陣列函式
- SqlServer——字串處理函式SQLServer字串函式
- Oracle函式-->字元處理Oracle函式字元
- 安全字串處理函式字串函式
- 檔案處理函式函式
- 時間處理函式函式
- 處理中英文的函式函式
- DML 語句處理過程
- Nucleus中斷處理過程!!!!
- python中PCA的處理過程PythonPCA
- DOM在Ahooks中的處理過程Hook
- SQL語句的處理過程修正SQL
- PHP函式處理函式例項詳解PHP函式
- 【故障處理】一次RAC故障處理過程
- 函式棧幀(呼叫過程)函式
- 儲存過程與函式儲存過程函式
- js函式執行過程的探究JS函式
- 單位元組處理函式函式
- php字串處理函式大全PHP字串函式
- SQL字串處理函式大全SQL字串函式
- 登錄檔處理函式函式
- JavaScript 非同步函式的 Promisification 處理JavaScript非同步函式
- main函式返回值的處理AI函式
- 資料庫變慢的處理過程資料庫
- 【原始碼】Redis命令處理過程原始碼Redis
- 某次BW 異常處理過程
- ora-14452處理過程
- HSG80故障處理過程