1

MDI MFC アプリケーションでドキュメントの複数のビューを使用したいと考えています。それを行うために、私の App クラスの InitInstance には次のコードがあります

m_pMainTemplate = new CMultiDocTemplate(IDR_OpenCVTestTYPE,
    RUNTIME_CLASS(CMyDoc),
    RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    RUNTIME_CLASS(CImageView));
if (!m_pMainTemplate)
    return FALSE;
AddDocTemplate(m_pMainTemplate);

m_pHistTemplate = new CMultiDocTemplate(IDR_OpenCVTestTYPE,
    RUNTIME_CLASS(CMyDoc),
    RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    RUNTIME_CLASS(CHistogramView));
if (!m_pHistTemplate)
    return FALSE;
AddDocTemplate(m_pHistTemplate);

しかし、アプリケーションを起動すると、ユーザーが 2 つのドキュメントのうちどのドキュメントを選択したいかを尋ね続けます。もちろん、それらのドキュメントは同じ種類です。この問題を解決するためのアイデアやヒントはありますか?

更新: 2番目のビューに別のメニューを用意し、このようにOnFileNewをオーバーライドすることで問題を解決しました

 void CMyApp::OnFileNew()
 {
    // TODO: Add your command handler code here
    m_pMainTemplate->OpenDocumentFile(NULL);
 }
4

1 に答える 1

2

2 番目のテンプレートを追加しないでください。

このMicrosoft KB 記事は、1 つのドキュメントに対して複数のビューを作成する方法を示しています。

編集: 1 つの可能性は、別のビューを持つ必要がある子フレームを開く前に、ドキュメント テンプレートを変更することです。

m_pMainTemplate->m_m_pNewViewClass = RUNTIME_CLASS(CHistogramView);

次に、あらゆる種類の子フレームを開く前にテンプレートにビューを設定して、子フレームを開くたびにテンプレートが期待どおりの状態であることを確認する必要があります。

于 2011-12-15T15:07:46.147 に答える