代码之家  ›  专栏  ›  技术社区  ›  Nick

从单个文件打开多个文档

mfc
  •  0
  • Nick  · 技术社区  · 17 年前

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

    我们有一个聚合文件格式,可以包含多个文档的信息。打开此文件时,我希望为文件中的每个记录创建多个文档。我们已经有了一个扩展的CDocManager,所以我想这可以通过OpenDocumentFile中的一些逻辑实现。问题是如何将有关“I am record x of y”备份的信息从CDocument类传递给Doc Manager?

    1 回复  |  直到 17 年前
        1
  •  1
  •   SmacL    17 年前

    如果有多个CDocument派生类型存储不同的信息,则需要为每种类型分别存储一个cmultidocument,通常存储在capp派生类中。当您调用app.inittInstance时,您使用类似的方法初始化每个模板

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

    但是,更传统的方法是使用一个单独的文档,使用多个视图访问聚合文档的不同部分。

    推荐文章