从单个文件打开多个文档

Posted

技术标签:

【中文标题】从单个文件打开多个文档【英文标题】:Open multiple documents from a single file 【发布时间】:2008-10-01 13:08:32 【问题描述】:

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

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

【问题讨论】:

【参考方案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);


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

【讨论】:

以上是关于从单个文件打开多个文档的主要内容,如果未能解决你的问题,请参考以下文章

关于MFC视图文档框架的理解-1

在Jackson的单个文件中反序列化来自多个YAML文档的POJO

使用 UNO 在同一窗口中打开多个文档

excel多个文件合并一个文件怎么做?

单个文档中的多个文档或数组

Java 和 YAML:如何解析多个 yaml 文档并将它们合并为单个 YAML 表示?