MFC框架程序剖析 下载本文

MFC框架程序剖析

1 MFC库是来发Windows应用程序的C++接口,MFC提供了一套面向对象的框架,程序开发人员可以基于这一框架开发Windows 应用程序,MFC采用面向对象的设计方法,将大部分的Windows API 分装到C++类中,一类成员函数的形式提供给程序员调用! 2 必须知道哪些类,哪些代码是向导生成的,哪些类,哪些代码是我们自己编写的,以及向导生成的变量,函数的功能! 3 CWnd类封装了与窗口相关的操作!

4 微软在MFC的底层框架类中分装了这些每一个窗口应用程序都需要的步骤!

5 MFC程序也有一个WinMain函数,但这个函数是在程序编译连接时有连接器将该函数连接到Test程序中的!

6 MFC程序中的类是如何与WinMain函数关联起来的呢? 7 为什么要定义一个全局变量theApp呢,让他在WinMain函数执之前执行呢?该对象的作用是什么呢?应用程序的实例是由实例句柄来标示的,而对MFC程序来说,通过产生一个应用程序的对象来唯一标示应用程序的实例!每一个MFC程序仅有一个应用程序类的派生类,每一个MFC程序有且仅有一个该派生类的实例化对象,也就是theApp全局对象。该对象就表示了应用程序本身!CWinApp的构造函数完成程序运行时的一些初始化工作!具体完成了哪些初始化工作呢?

8 定义变量的时下划线表示所定义的变量是某各类的成员变量!

9 MFC框架程序的运行过程:the App[先调用子类的构造函数]------- CWinApp()------- WinMain------

CTextApp::initinstance()[在这里通过调用一些底层的代码完成窗口设计到显示的全部过程]-------内部调用

CmainFrame::PreCreatWindow()-------内部调用调用 CframeWnd::PreCreateWindow()-----------内

AFXAPIAfxEndDeferRegisterClass()[完成窗口的设计和注册】------ CMainFrame::OnCreate()------内部调用 CFrameWnd::OnCreate()-----------内部调用 CreateEX()------ CreateWindowEx()-------

CframeWnd::PreCreateWindow()[程序员可以在产生窗口前有机会去修改窗口的外观]------ ShowWindow()------ UpdateWindow-------

CWinThread::Run()[进入消息循环]-------- defeWindowProc[部分消息由消息映射来处理]

10 在CWinApp类中由一个名为m_pMainWnd的成员变量,该成员变量是一个CWnd类型的指针,他保存了应用程序框架窗口的对象指针。也就是说是指向CMainFrame对象的指针。这个CWnd类型的指针在CWinThread类中定义,所有从该类中派生出来的类都具有该成

员变量!

11 所有的工作只是完成了框架类主窗口的创建及显示,视图窗口的创建及显示是如何完成的呢?

12 数据的存储和加载由文档类完成,数据的显示和修改则由视图类完成,从而把数据的显示和管理方法分离开来!

13单文档模板对象:该对象把文档对象,框架对象,视图对象有机的结合起来,把三个类组织成一个整体! 14 搞清楚CWnd类是如何与窗口关联起来的!

15 在编写win32 application应用程序时,可以调用平台SDK函数来实现所需要的函数!掌握windows API编程方法!可以在自己的程序中使用系统的API函数来完成自己的功能!

16 在定义自己的成员函数时,如果调用的API函数名与自己的函数名不同,那么该API函数名前可以加也可以不加::符号,编译器会自动识别API函数。但是如果当前定义的成员函数与内部调用的API函数名相同,那么后者前面必须加上::符号,否则程序在编译或运行的时候就会出错!

17 C++窗口类对象与窗口并不是一回事,他们之间唯一的关系是C++窗口类对象内部定义了一个窗口句柄变量,保存了与这个C++窗口类对象相关的那个窗口句柄。窗口销毁时,与之对应的C++窗口类对象销毁与否要看与其生命周期是否结束,但是窗口类对象销毁时,与之相关联的窗口也将销毁!

18 在MFC的资源类中有些类的对象的构造(包括对象构造与初始