从一个文件中打开多个文档

时间: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);

}

不过,更常规的方式是拥有一个文档,并具有用于访问聚合文档不同部分的多个视图。