OnWndMsg函數的處理過程

來源:互聯網
上載者:User

標籤:訊息映射   宏   

    在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_MSGDECLARE_MESSAGE_MAP()

   接著,再到CDrawView.cpp中,看看BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()這兩個宏之間是否有相應的訊息映射宏,如下:

// CDrawView.cppIMPLEMENT_DYNCREATE(CDrawView, CView)BEGIN_MESSAGE_MAP(CDrawView, CView)//{{AFX_MSG_MAP(CDrawView)ON_WM_LBUTTONDOWN() //函數OnLButtonDown()在訊息映射宏之中//}}AFX_MSG_MAP// Standard printing commandsON_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()的實現:



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.