MFC程序初始化

            用一个简单的Frame1程序,把MFC数个最重要的类别阶层仿真出来:   

 

 

1.CwinApp (应用程序类) 提供了用户与 Windows 应用程序之间进行交流的界面。在实例化该类对象后,这个对象自动地把自身与 Widnows 系统建立联系,接收 Windows 传送的消息,并交给程序中相应的对象去处理,免去了程序员许多的工作,使得开发 Windows 序变得简单方便。
这个类中有一个重要的成员函数:InitInstance(),在 Windows 环境下,可以运行同一程序的多个实例,函数 InitInstance() 的作用是在生成的一个新的实例的时候,完成一些初始化的工作。另外还有一个函数InitApplication(),与前者的区别是它"每一个程序只调用一次",而 InitInstance() 是"每一个例程调用一次"。

2.CFrameWnd

CFrameWnd (框架窗口类) 是应用程序的框架窗口。所谓框架窗口是指包括菜单、工具栏、状态栏和窗口客户区的整个应用程序的主窗口,相当于简单应用程序框架中所提到的主窗口。在 MFC 程序中,一般并不需要经常对 CFrameWnd 类进行操作,更多的是对视窗类进行操作,达到对程序中的数据进行编辑的目的。

3.CView

CView (视图类) 派生于 Cwnd 类,用于管理文档/视图结构中的窗口客户区,这个窗口在文档/视图结构中称为视图。视图类专门用于对应用程序的数据进行显示,在视图类中有一个很重要的函数 OnDraw(),OnDraw()函数是用于进行应用程序数据显示的函数,一般在派生类中要重写这一个函数。在文档/视图结构中,重写的OnDraw()函数首先清空客户区窗口,然后再在窗口上绘制客户需要的内容,也就是说,OnDraw() 函数将集中管理所有的数据显示工作。

4.CDocument

CDocument (文档类) 虽然视图类负责应用程序数据的显示,但应用程序的数据一般不直接由视图类管理,而是作为文档类(CDocument)的数据成员,由文档类来进行集中管理,而且文档类将直接与磁盘相联系,把文档类中的数据存盘,或从磁盘中取出存盘的数据。视图类用 OnDraw() 函数展示数据,但应用程序的数据却存放在文档类中,视图类的函数 GetDocument() 的返回值就是指向文档类的指针,通过这个指针就可以访问 到文档类中的公有数据成员。文档类的数据要存盘或取盘要与磁盘进行数据传递,可以用 CFile 类结合CFileDialog 类实现。在文档/视图结构中,通过文档类中的序列化函数 Serialize() 就可以很简单的完成数据存取任务。文档/视图结构中,数据的传输过程如下图所示:

                                                                

 

 

 

最先初始化全局对象 theApp,在 theApp 的 InitInstance() 函数中完成初始化,包括框架窗口类、视图类、文档类(和文档模板类),
然后通过消息机制让这些类的对象进行通讯,需要注意的是这些类的继承层次。

 

 
 

 

 

 

 

 

posted @ 2020-03-29 21:55  坦坦荡荡  阅读(607)  评论(0)    收藏  举报