0

当在 MFC 应用程序中打开单个文件时,我将如何创建多个文档?

我们有一个聚合文件格式,可以包含多个文档的信息。打开此文件时,我想为文件中的每条记录创建多个 CDocument。我们已经有一个扩展的 CDocManager,所以我猜这可以通过 OpenDocumentFile 中的一些逻辑来实现。问题是如何将有关“我记录 x of y”的信息从 CDocument 类备份到文档管理器?

4

1 回答 1

1

如果您有多个存储不同信息的 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);

}

不过,更传统的做法是拥有一个文档,其中包含用于访问聚合文档的不同部分的多个视图。

于 2008-10-01T14:10:52.483 回答