码迷,mamicode.com
首页 > 其他好文 > 详细

OnWndMsg函数的处理过程

时间:2014-06-24 20:04:27      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:消息映射      

    在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()的实现:

bubuko.com,布布扣

 

OnWndMsg函数的处理过程,布布扣,bubuko.com

OnWndMsg函数的处理过程

标签:消息映射      

原文地址:http://blog.csdn.net/sanqima/article/details/33292435

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!