2008-10-01 52 views
0

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

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

回答

1

如果您有多个存储不同信息的CDocument派生类型,则需要为每个类型分别存储一个独立的CMultiDocTemplate,通常存储在您的CApp派生类中。当你调用App.Initinstance您初始化使用的东西每个模板像

m_MyTempate1 = new CAtlasMDITemplate(IDR_RES_TYPE1, 
     RUNTIME_CLASS(CDocumentType1), 
    RUNTIME_CLASS(CChildFrameSplitter), 
    RUNTIME_CLASS(CViewType1)); 

当你打开你的基础文件,然后创建和检索您的其他文件。有很多地方可以做到这一点,Serialize可能是最简单的,例如

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); 

} 

这样做的更常规方法是使单个文档具有多个视图来访问聚合文档的不同部分。