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()中创建 文档模板对象
![]()
|
文档视图结构解析
最新推荐文章于 2023-05-28 17:58:41 发布
文档视图结构解析
2008-05-06 13:51