2011-12-15 57 views
0

我想在我的MDI MFC应用程序中有一个文档的多个视图。为了做到这一点,我的App类的InitInstance中有以下代码在MFC MDI应用程序中处理文档的多个视图

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

重写OnFileNew是您的案例中的正确方法。 – zar 2011-12-15 16:26:50

回答

1

不要添加第二个模板解决了这个问题。

Microsoft KB article显示了如何为单个文档创建多个视图。

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

m_pMainTemplate->m_m_pNewViewClass = RUNTIME_CLASS(CHistogramView); 

你应该那么很可能打开任何类型的子框架,以确保该模板对每个孩子框架开口预期的状态之前设置在模板中的视图。

+0

如果您仔细阅读文章,您会注意到它是用于SDI的。我的是MDI。 – 2011-12-15 15:26:59

相关问题