MFC--文档、视图、框架窗口、文档模板之间的相互关系

1、首先应该对 CWinApp类有充分的了解
    它包含并管理着应用程序的文档/视窗的所有信息。它有一个成员变量 
    CDocManager * m_pDocManager,此变量是文档/视窗的管理器,m_templateList
    是CDocManager里的一个列表,此列表里保存了所有文档模板的指针,当用户调用
    CWinApp::AddDocTemplate( pDocTemplate ) 后该pDocTemplate存入了
    CWinApp::m_pDocManager::m_templateList里。
CWinApp::GetFirstDocTemplatePosition()
CWinApp::GetNextDocTemplate(POSITION& pos)
是遍例所有的文档模板指针。

2、上面我们提到了文档模板(CMultiDocTemplate(我们主要针对对文档)),
    这是一个极重要的类。CMultiDocTemplate::m_docList保存的所有该种文档的
    文档实例的指针列表。下面两个函数用于维护CMultiDocTemplate::m_docList数据
CMultiDocTemplate::AddDocument(CDocument* pDoc);
CMultiDocTemplate::RemoveDocument(CDocument* pDoc);

CMultiDocTemplate::GetFirstDocPosition() const;
CMultiDocTemplate::CDocument* GetNextDoc(POSITION& rPos) const;
用于遍例该文档类型所有文档实例。

3、上面提到文档(CDocument)
   CDocument 我们最熟悉不过了。每一个文档实例可有多个视与之相对应。
   CDocument::m_viewList用来保存所有与此文档实例相关的View
   CDocument::GetDocTemplate 可获得CMultiDocTemplate;
4、CView 他是放在CMDIChildWnd里的,每一个CMDIChildWnd有一个View
   CView::GetDocument可获得与此视相关的CDocument
   CView::GetParentFrame() 可获得CMDIChildWnd;

通过以上分析可见CWinApp,CMDIChildWnd,CView,CDocument,CMultiDocTemplate之间知道其中一个实例
必可知道其他所有几个实例,CWinApp统领全局,任何时候,只要获得CWinApp实例,则所有的文档模板,
文档实例,视,Frame窗口均可被枚举出来。AfxGetApp() 获得CWinApp实例指针。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值