Last Updated 2004/11/09
Visual C++ MFC ドキュメントビュー
複数のドキュメント
2004/11/09

ドキュメントを複数作成する.
異なるドキュメントを管理する CMultiDocTemplate を複数個 CWinApp のメンバとして用意する.

AppWizard で作成すると,CWinApp::InitInstance() にて,CMultiDocTemplate を new して AddDocTemplate() しているが,CMultiDocTemplate のインスタンスを CWinApp のメンバに格納する.

CMultiDocTemplate m_pTemplate1;
CMultiDocTemplate m_pTemplate2;

    // 1つ目のドキュメント
    m_pTemplate1 = new CMultiDocTemplate(
        IDR_FOOTYPE,
        RUNTIME_CLASS(CFooDoc),
        RUNTIME_CLASS(CFooFrame),
        RUNTIME_CLASS(CFooView));
    AddDocTemplate(m_pTemplate1);

    // 2つ目のドキュメント
    m_pTemplate2 = new CMultiDocTemplate(
        IDR_BARTYPE,
        RUNTIME_CLASS(CBarDoc),
        RUNTIME_CLASS(CBarFrame),
        RUNTIME_CLASS(CBarView));
    AddDocTemplate(m_pTemplate2);


あとは,それぞれドキュメントを開く時に,以下の様にする.

    ASSERT(m_pFooTempl != NULL);
    ASSERT_KINDOF(CDocTemplate, m_pTemplate1);

    m_pTemplate1->OpenDocumentFile(NULL);


MFC の隠しクラス CDocManager(Docmgr.cpp) が参考になる.


参照
前後のTips
複数のドキュメント

DSS ProgrammingTipsCGI Ver1.02