2012计算机等考二级C++备考笔记(4)
简单绘图
本章介绍了MFC的消息映射机制,探讨发送给窗口的消息是如何被MFC框架通过窗口句柄映射表和消息映射表来用窗口类的处理函数进行响应的。讨论设备描述表及其封装类CDC的应用,结合画图程序进行分析。
4.1消息映射机制
为视类添加一个鼠标左键按下的消息,在源文件中会添加3处代码。
[DrawView.h]
1 protected:
2 //{{AFX_MSG(CDrawView)
3 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
4 //}}AFX_MSG
5 DECLARE_MESSAGE_MAP()
此次为一个OnLButtonDown函数的声明。
2. [DrawView.cpp]
1 BEGIN_MESSAGE_MAP(CDrawView, CView)
2 //{{AFX_MSG_MAP(CDrawView)
3 ON_WM_LBUTTONDOWN()
4 //}}AFX_MSG_MAP
5 END_MESSAGE_MAP()//消息映射表
此处为将一个鼠标左键按下的消息和一个消息响应函数关联起来。
3. [DrawView.cpp]
1 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
2 {
3 // TODO: Add your message handler code here and/or call default
4 //MessageBox(“OK”);
5 CView::OnLButtonDown(nFlags, point);
6 }
OnLButtonDown函数实现。
MFC消息映射机制的具体实现方法是:在每个能接收和处理消息的类中(View,Frame.)定义了一个消息和消息静态函数对照表,即消息映射表,在消息映射表中,消息与对应的消息处理函数指针是成对出现的。某个类能处理所有消息及其对应的消息处理函数的地址都列在这个对应的静态表中,当有消息需要处理时,程序只需要搜索改消息静态表,查看表中是否有改信息,就知道该类能否处理该消息,如果能,则通过静态表找到与之对应的消息处理函数。
在CDrawView类中,CDrawView对象相关一个窗口,当然有它的窗口句柄,该句柄与CDrawView对象的一个指针CDrawView*存在一一对应的关系。
艺考用户说说
友善是交流的起点