我想在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);
}
答案 0 :(得分:2)
不要添加第二个模板。
此Microsoft KB article显示了如何为单个文档创建多个视图。
编辑:一种可能性是在打开必须具有备用视图的子框架之前修改文档模板。
m_pMainTemplate->m_m_pNewViewClass = RUNTIME_CLASS(CHistogramView);
然后,您应该在打开任何类型的子框架之前在模板中设置视图,以确保模板处于每个子框架打开的预期状态。