首页 > 代码库 > OnWndMsg函数的处理过程
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.cppIMPLEMENT_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()的实现:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。