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

但是当我启动应用程序时,它一直在询问用户想要选择两个文档中的哪个文档。当然,这些文件是同一种文件。任何想法或提示来解决这个问题?

更新:我通过为第二个视图设置单独的菜单并像这样覆盖 OnFileNew 解决了这个问题

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

1 回答 1

2

不要添加第二个模板。

这篇Microsoft 知识库文章展示了如何为单个文档创建多个视图。

编辑:一种可能性是在打开必须具有备用视图的子框架之前修改您的文档模板。

m_pMainTemplate->m_m_pNewViewClass = RUNTIME_CLASS(CHistogramView);

然后,您应该在打开任何类型的子框架之前在模板中设置视图,以确保模板在每个子框架打开时都处于预期状态。

于 2011-12-15T15:07:46.147 回答