添加模板

在复写的CWinApp::InitInstance()函数中添加下面代码

CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_SMARTTTYPE,RUNTIME_CLASS(CCosiWorksDoc),RUNTIME_CLASS(CChildFrame), // custom MDI child frameRUNTIME_CLASS(CCosiWorksView));
AddDocTemplate(pDocTemplate);

new一个CMultiDocTemplate,并用doc,frame,view的CRuntimeClass类初始化CMultiDocTemplate

然后调用AddDocTemplate,往CWinApp的成员m_pDocManager变量,文档管理器中添加模板

void CWinApp::AddDocTemplate(CDocTemplate* pTemplate)
{if (m_pDocManager == NULL)m_pDocManager = new CDocManager;m_pDocManager->AddDocTemplate(pTemplate);
}

打开文档

CDocument* CWinApp::OpenDocumentFile(LPCTSTR lpszFileName)
{ENSURE_VALID(m_pDocManager);return m_pDocManager->OpenDocumentFile(lpszFileName);
}CDocument* CDocManager::OpenDocumentFile(LPCTSTR lpszFileName)
{POSITION pos = m_templateList.GetHeadPosition();CDocTemplate* pBestTemplate = NULL;while (pos != NULL){CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos);CDocTemplate::Confidence match;match = pTemplate->MatchDocType(szPath, pOpenDocument);if (match > bestMatch){bestMatch = match;pBestTemplate = pTemplate;}if (match == CDocTemplate::yesAlreadyOpen)break;      // stop here}return pBestTemplate->OpenDocumentFile(szPath);}CDocument* CMultiDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,BOOL bMakeVisible)
{CDocument* pDocument = CreateNewDocument();
}CDocument* CDocTemplate::CreateNewDocument()
{CDocument* pDocument = (CDocument*)m_pDocClass->CreateObject();return pDocument;
}void CMultiDocTemplate::AddDocument(CDocument* pDoc)
{ASSERT_VALID(pDoc);CDocTemplate::AddDocument(pDoc);ASSERT(m_docList.Find(pDoc, NULL) == NULL); // must not be in listm_docList.AddTail(pDoc);
}CDocument* CMultiDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,BOOL bMakeVisible)
{CDocument* pDocument = CreateNewDocument();CFrameWnd* pFrame = CreateNewFrame(pDocument, NULL);
}CFrameWnd* CDocTemplate::CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther)
{CFrameWnd* pFrame = (CFrameWnd*)m_pFrameClass->CreateObject();
}CDocument* CMultiDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,BOOL bMakeVisible)
{CDocument* pDocument = CreateNewDocument();CFrameWnd* pFrame = CreateNewFrame(pDocument, NULL);pDocument->OnOpenDocument(lpszPathName);
}

到这里调用到了CMultiDocTemplate中实际的文档里,就是RUNTIME_CLASS(CCosiWorksDoc)

MFC 多文档源码分析1相关推荐

  1. java计算机毕业设计高铁在线购票系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计高铁在线购票系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计高铁在线购票系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  2. java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  3. java响应式交友网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

    java响应式交友网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java响应式交友网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B/S ...

  4. java计算机毕业设计web家庭财务管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计web家庭财务管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计web家庭财务管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  5. java项目任务跟踪系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

    java项目任务跟踪系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java项目任务跟踪系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  6. java计算机毕业设计数字家谱管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计数字家谱管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计数字家谱管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署 本源码技 ...

  7. java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计个性化穿搭推荐系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构 ...

  8. java计算机毕业设计红色景点自驾游网站管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计红色景点自驾游网站管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计红色景点自驾游网站管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技 ...

  9. java计算机毕业设计高校体育器材及场地管理MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计高校体育器材及场地管理MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计高校体育器材及场地管理MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

最新文章

  1. 【Java】6.9 枚举类
  2. scala学习笔记-Map与Tuple(10)
  3. 【原创中】儿子,听爸爸跟你说
  4. 【转】UITableView详解(UITableViewCell
  5. 如何制作印章_如何用Photoshop制作个性印章/文字图片
  6. PowerDesigner建数据库模型增加自定义扩展属性
  7. 二十五还是单身的十大原因
  8. 计算机科学家 收入,你离年薪100万的数据科学家还差10个“码农”
  9. Go 语言接口详解(一)
  10. Python学习笔记第二十四周(JavaScript补充)
  11. wxPython 入门教程.
  12. MySQL数据库安装教程
  13. 使用 spire.xls 免费版 excel 转换成 pdf
  14. Excel: 批量去除空格的函数——trim函数, substitute函数,clean函数
  15. Java实现腾讯企业邮箱收发邮件
  16. 小游戏流量变现瓶颈,新增长点是超级App?
  17. ie浏览器出现代理服务器没有响应
  18. 怎么区分zh和ch_怎样区分zh,ch,sh与z,c,s
  19. 【无标题】线性代数的可用之地----图像的矩阵表示之浅看
  20. 昆明半程马拉松:1名选手死亡5名选手昏迷(图)

热门文章

  1. mac 查看端口并终结
  2. webflux 对url参数的接收处理
  3. 计算机时代 英语,雅思8分范文:计算机时代教师角色 【出国英语】
  4. java实现文件在线预览
  5. windows 2502 2503 错误解决
  6. 利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired
  7. Tcl 语言改写Java题目-1
  8. 计算机 - 网络原理
  9. 基于visual Studio2013解决面试题之0902内存拷贝
  10. (转载)ubuntu开启SSH服务