现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

MFC 文档 视图 和 框架 的建立

2012-08-24 13:50 工业·编程 ⁄ 共 1277字 ⁄ 字号 暂无评论

文档将描述MFC框架程序中WinApp , Document Templates, Document, View , Frame创建和所有关系;

CWinApp
在一个系统程序中只有一个CWinApp对象,该对象会被静态的创建并在MFC框架内部实现的WinMain()中进行初始化(动态链接库程序中不会包含一个CWinApp实例且程序的初始化是在DllMain()中进行)

CWinApp负责管理一个Document Template的链表(CPtrList), 在一个程序中通常会有一个或多个 Document Template,这些Document Template一般是在CWinApp类的虚函数InitInstance中从资源文件中加载的
同时WinApp对象拥有全部的框架窗体(Frame Window),主框架窗体(main frame window)必需被记录保存在WinApp对象的m_pMainWnd中;如果想实现个人的设定的化,可以在InitInstance的实现中改写预先由向导设定的m_pMainWnd;一般的,主框架窗体在SDI中为CMainFrame, 而在MDI中则是CMDIFrameWnd

CDoTemplate
Document Template负责管理Ducument的创建和管理, 它拥有全部全部由它创建的Document

在SDI中 CSingleDocTemplate负责跟踪唯一打开的Document
在MDI中CMultiDocTemplate用一个链表(CPtrList)来负责维护全部被打开的Document
CDocTemplate提供虚成员函数来增加或删除文档
CDocTemplate::AddDocument()
CDocTemplate::RemoveDocument()

同时CDocumentTemplate是CDocument的友元类,在CDocument中一个CDocumentTemplate的指针用来指向创建文档的Document Template

CWinApp负责实现OnFileOpen , 将会依次查询全部Document Template

CDocTemplate同时负责与Document和框架窗体关联的界面
CDocTemlate负责新建立的未命名文件的计数 将其命名为untitled X

CDocument
Document是为CDocument Template所有的
Document 负责维护当前显示文档的视图的链表(CPtrList)
Document不负责创建视图但是他们会在视图创建后关联在视图上,且当一个文档关闭(file open /close)时所有的关联的视图都将被关闭;同时最后一个与文档关联的视图关闭时文档也会被关闭
Document 提供结构AddView()  RemoveView()来维护视图链表
同时CDocument是CView的友元
在CView中的成员变量CView::m_pDocument用来指向视图所关联的文档

CFrameWnd
包括一些列的派生类CMDIFrameWnd CMDIChildWnd
负责创建在框架的客户区的窗体

给我留言

留言无头像?