MFC中的基础类
MFC中比较重要的类的层析结构如下:
其中:
CObject类是MFC提供的绝大多数类的基类。该类完成动态空间的分配与回收,支持一般的诊断、出错信息处理和文档序列化等。
CCmdTarget类主要负责将系统事件(消息)和窗口事件(消息)发送给响应这些事件的对象,完成消息发送、等待和派遣(调度)等工作,实现应用程序的对象之间协调运行。
CWinApp类是应用程序的主线程类,它是从CWinThread类派生而来。CWinThread类用来完成对线程的控制,包括线程的创建、运行、终止和挂起等。
CDocument类是文档类,包含了应用程序在运行期间所用到的数据。
CWnd类是一个通用的窗口类,用来提供Windows 中的所有通用特性。
CView 是用于让用户通过窗口来访问文档以及负责文档内容的显示。
CFrameWnd 类是从 CWnd 继承来的,并实现了标准的框架应用程序。
CDialog 类用来控制对话框窗口。
CMDIFrameWnd和CMDIChildWnd类分别用来多文档应用程序的主框架窗口和文档子窗口的显示和管理。
CMiniFrameWnd类是一种简化的框架窗口,它没有最大化和最小化窗口按钮,也没有窗口系统菜单,一般很少用到它。
当你了解了上面的基础类库之后,不代表你就会使用MFC框架编程了,下面进行最基本的介绍:
1:知道有两个关键类:App类(应用程序本身)和CWnd类(窗口)
用户一般必须自定义两个类,继承上边的两个类(如一般书中例题会定义class CMyApp:public CWinApp和class CMainWindow :public CWnd)。
上边两个类中,一个CWinApp类中的InitInstance不可小觑!其工作完成基本的窗口初始化,整个程序的基础;一个类CWnd,完成所有的窗口内实现功能的操作,是整个程序功能性最强的部分!CWnd类一般会比较庞大,其中涉及到消息映射函数,还涉及到自定义函数功能如何划分,调用库函数等!(具体程序实现说白了就是类和类之间的分工合作,成员函数的调用现在我的理解,不保证正确,还请高手指点。)
2:了解消息映射机制
知道mfc程序是基于消息来驱动的,没有消息就没有动作。如果把mfc应用程序比作一个怪物,那么这个怪物超级懒,打一巴掌它才会有反应!打一巴掌就是给它一个消息,它的反应就是你定义的消息响应函数。
所以学习mfc必须熟悉常见的消息和对应的消息响应函数,最好会自己定义需要的自定义消息和响应函数。知道如何将消息与响应函数对应起来。然后通过程序积累,掌握一些常用的类和类中常用的、基本的成员函数。常用的消息映射函数
常用类:
功能类:CPoint、CRect、CString、CClientDC等;
窗口类:CFrameWnd、CDialog、CView等;
常用对象:CWinApp类、CDocument、CSingleDocTemplate等;
这些类常常作为基类或者在实现某些常用功能时使用。并且这些类中有一些常用的成员函数、有固定的执行顺序。只有熟悉了这些,才知道如何在这个庞然大物般的空壳子里,在哪儿快速的编写代码!
常用的消息和消息响应函数:
WM_PAINT, OnPaint();
WM_TIMER, OnTimer();
WM_MOUSEWHELL, OnMouseMove();
WM_LBUTTONDOWN, OnLButtonDown();
最后,看懂程序很关键的一点,分清楚程序中哪些是用户自定义的函数,哪些是库函数;库函数和自定义函数之间怎么合作完成了这个程序;函数调用和程序功能如何划分,又是如何实现的;整个编译过程中,各个函数的执行顺序怎样(通过设置断点就可获知)。多看几个例子,每个例子都力求深入的分析,慢慢就会积累一定的感觉,等形成思维惯性,mfc就能高效的服务于我们自己编写的程序了!(这也是我当前的目标了!)
参考文章:
http://www.cnblogs.com/macong/archive/2012/11/15/2772207.html
http://blog.csdn.net/jingmiaa/article/details/50835864