当在 MFC 应用程序中打开单个文件时,我将如何创建多个文档?
我们有一个聚合文件格式,可以包含多个文档的信息。打开此文件时,我想为文件中的每条记录创建多个 CDocument。我们已经有一个扩展的 CDocManager,所以我猜这可以通过 OpenDocumentFile 中的一些逻辑来实现。问题是如何将有关“我记录 x of y”的信息从 CDocument 类备份到文档管理器?
当在 MFC 应用程序中打开单个文件时,我将如何创建多个文档?
我们有一个聚合文件格式,可以包含多个文档的信息。打开此文件时,我想为文件中的每条记录创建多个 CDocument。我们已经有一个扩展的 CDocManager,所以我猜这可以通过 OpenDocumentFile 中的一些逻辑来实现。问题是如何将有关“我记录 x of y”的信息从 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);
}
不过,更传统的做法是拥有一个文档,其中包含用于访问聚合文档的不同部分的多个视图。