从单个文件打开多个文档
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);
不过,更传统的做法是拥有一个文档,其中包含用于访问聚合文档的不同部分的多个视图。
【讨论】:
以上是关于从单个文件打开多个文档的主要内容,如果未能解决你的问题,请参考以下文章