1、模板、文档、视图、框架的关系
连载1~5我们各个击破地讲解了文档、文档模板、视图和框架类,连载1已经强调这些类有着亲密的内部联系,总结1~5我们可以概括其联系为:
(1)文档保留该文档的视图列表和指向创建该文档的文档模板的指针;文档至少有一个相关联的视图,而视图只能与一个文档相关联。
(2)视图保留指向其文档的指针,并被包含在其父框架窗口中;
(3)文档框架窗口(即包含视图的MDI子窗口)保留指向其当前活动视图的指针;
(4)文档模板保留其已打开文档的列表,维护框架窗口、文档及视图的映射;
(5)应用程序保留其文档模板的列表。
我们可以通过一组函数让这些类之间相互可访问,表6-1给出这些函数。
表6-1 文档、文档模板、视图和框架类的互相访问
连载1~5我们各个击破地讲解了文档、文档模板、视图和框架类,连载1已经强调这些类有着亲密的内部联系,总结1~5我们可以概括其联系为:
(1)文档保留该文档的视图列表和指向创建该文档的文档模板的指针;文档至少有一个相关联的视图,而视图只能与一个文档相关联。
(2)视图保留指向其文档的指针,并被包含在其父框架窗口中;
(3)文档框架窗口(即包含视图的MDI子窗口)保留指向其当前活动视图的指针;
(4)文档模板保留其已打开文档的列表,维护框架窗口、文档及视图的映射;
(5)应用程序保留其文档模板的列表。
我们可以通过一组函数让这些类之间相互可访问,表6-1给出这些函数。
表6-1 文档、文档模板、视图和框架类的互相访问
从该对象 | 如何访问其他对象 |
全局函数 | 调用全局函数AfxGetApp可以得到CWinApp应用类指针 |
应用 | AfxGetApp()->m_pMainWnd为框架窗口指针;用CWinApp::GetFirstDocTemplatePostion、CWinApp::GetNextDocTemplate来遍历所有文档模板 |
文档 | 调用CDocument::GetFirstViewPosition,CDocument::GetNextView来遍历所有和文档关联的视图;调用CDocument:: GetDocTemplate 获取文档模板指针 |
文档模板 | 调用CDocTemplate::GetFirstDocPosition、CDocTemplate::GetNextDoc来遍历所有对应文档 |
视图 | 调用CView::GetDocument 得到对应的文档指针; 调用CView::GetParentFrame 获取框架窗口 |
文档框架窗口 | 调用CFrameWnd::GetActiveView 获取当前得到当前活动 |