文档视图结构解析

来源:互联网 发布:阿里云 关闭云盾 编辑:程序博客网 时间:2024/05/16 18:06
文档视图结构解析
2008-05-06 13:51

theApp是一个唯一的全局变量,它的主要功能是通过调用已经被封装的WinMain主函数启动程序。

基于文档视图框架的MFC应用程序主要对象之间的相互关系,如上图所示。

1在主框架(CFrameWnd)中访问视图(CView

GetActiveView()

功能:    返回活动的CView对象

原型:    CView* GetActiveView() const;

说明:    通常使用的视图都是CView的派生类,使用派生类中的函数之前需要做一次类型转换,例如 ((CXXXView*)GetActiveView())->MyFunction();

                     该问题是父类指针和子类指针的问题。

2在视图(CView)中访问主框架(CFrameWnd

GetParentFrame()

功能:    返回活动的CView对象

原型:    CFrameWnd* GetParentFrame() const;

说明:    在视图中获取主框架的方法属这个最简单。

3在视图(CView)中访问文档对象(CDocumet

GetDocument()

功能:    获取视图的文档指针

原型:    CDocumnet* GetDocument() const;

说明:    使用Wizard生成文档视图结构的程序,VC会根据项目自动重载生成类似下面的代码:

              #ifndef _DEBUG

              inline CXXXDoc* CXXXView::GetDocumnet()

              { return (CXXXDoc*)m_pDocument; }

              #endif

4在文档(CDocument)中访问视图(CView

UpdateAllViews(NULL)

功能:    通知所有视图,文档对象已经被修改

原型:    void UpdateAllViews(

CView* pSender,     //要更新的视图指针,如果更新所有视图,设置为NULL

LPARAM lHint = 0L, //包含更改消息的通知

CObject* pHint = NULL)

说明:    使用中一般都使用UpdateAllViews(NULL)的形式,它调用与当前文档对象关联的所有视图的OnUpdate()虚函数。

Cdocument::AddView

功能:    用来建立一个视图对象与文档对象的连接(将视图添加在链表中,并将视图的文档指针指向该文档)。

Cdocument::GetFirstViewPosition() Cdocument::GetNextView(pos)

功能:    用来遍历视图对象

5文档模板对象 创建 文档对象

CSingleDocTemplate () CMultiDocTemplate()

功能:    框架使用构造函数生成文档对象,并且把文档、框架和视图连接起来

6文档对象 访问 文档模板对象

GetDocTemplate() GetFirstDocPosition() GetNextDoc(pos)

功能:    SDI中,一个文档模板只能创建一个文档对象,二者一一对应,所以通过GetDocTemplate()就可以取得指向文档模板的指针;在MDI中,一个文档模板可以创建多个文档对象,每个文档模板实例都维护一个文档对象列表,用来存储与之关联的文档对象,使用GetFirstDocPosition() GetNextDoc(pos)遍历所有文档。

7少用

8文档模板对象 创建 框架窗口对象

CSingleDocTemplate () CMultiDocTemplate()

功能:    框架使用构造函数生成文档对象,并且把文档、框架和视图连接起来

9应用程序对象 通过CDocManager管理 文档模板对象

10应用程序对象 InitInstance()中创建 文档模板对象

 

 

 

 

原创粉丝点击