您的位置:首页 > 其它

文档视图结构解析

2010-01-22 17:15 162 查看
文档视图结构解析
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()
功能: 框架使用构造函数生成文档对象,并且把文档、框架和视图连接起来

[b]9
应用程序对象通过CDocManager管理文档模板对象
10应用程序对象InitInstance()中创建文档模板对象

[/b]



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: