从一个文件中打开多个文档
时间:2020-03-06 14:58:29 来源:igfitidea点击:
在MFC应用程序中打开单个文件时,如何创建多个文档?
我们有一个汇总文件格式,其中可以包含多个文档的信息。打开此文件后,我希望为文件中的每个记录创建多个CDocument。我们已经有了扩展的CDocManager,所以我猜想这可以通过OpenDocumentFile中的某些逻辑来实现。问题是如何将有关"我记录了y的x"的信息从CDocument类传递到文档管理器?
解决方案
如果我们有几种CDocument派生类型存储不同的信息,则每种类型都需要一个单独的CMultiDocTemplate,通常存储在CApp派生类中。调用App.Initinstance时,我们会使用类似以下内容初始化每个模板:
m_MyTempate1 = new CAtlasMDITemplate(IDR_RES_TYPE1, RUNTIME_CLASS(CDocumentType1), RUNTIME_CLASS(CChildFrameSplitter), RUNTIME_CLASS(CViewType1));
当我们打开基本文档时,然后我们将创建并检索其他文档。我们可以在许多地方进行此操作,序列化可能是最简单的方法,例如
void CDocumentType1::Serialize(CArchive& ar) { // // Do all the document type 1 serialisation // // Create second doc CDocumentType2 *pDoc2 = theApp.m_MyTempate2->OpenDocumentFile(NULL); pDoc2->Serialize(ar); }
不过,更常规的方式是拥有一个文档,并具有用于访问聚合文档不同部分的多个视图。