0

MFC アプリケーションで 1 つのファイルを開いているときに、複数のドキュメントを作成するにはどうすればよいですか?

複数のドキュメントの情報を含めることができる集約ファイル形式があります。このファイルを開くと、ファイル内のレコードごとに複数の CDocuments が作成されます。すでに拡張された CDocManager があるので、これは OpenDocumentFile のロジックによって実装できると思います。問題は、「私は y のレコード x です」という情報を CDocument クラスからドキュメント マネージャに渡す方法です。

4

1 に答える 1

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

}

ただし、これを行うより従来的な方法は、集約ドキュメントのさまざまな部分にアクセスするための複数のビューを備えた単一のドキュメントを持つことです。

于 2008-10-01T14:10:52.483 に答える