MFC多文档程序启动时一个文档创建两个视图
2011-11-16 10:45
513 查看
1.在App类中创建两个public变量:
CMultiDocTemplate * m_pDocTemplate;
CMultiDocTemplate * m_pNewDocTemplate;
2.在App类中的Initlnstance()函数中添加以后程序:
m_pDocTemplate = new CMultiDocTemplate(
IDR_MULTIDTYPE,
RUNTIME_CLASS(CMultiDocumentStudyDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMultiDocumentStudyView));
AddDocTemplate(m_pDocTemplate);
//CMultiDocTemplate * pNewDocTemplate;
m_pNewDocTemplate = new CMultiDocTemplate(
IDR_MULTIDTYPE,
RUNTIME_CLASS(CMultiDocumentStudyDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CNewView));
AddDocTemplate(m_pNewDocTemplate);
3.重载OnFileNew函数(App类中),默认只打开一个视图:
m_pDocTemplate->OpenDocumentFile(NULL);
4.在Doc类中重载OnNewDocument()函数
CMultiDocumentStudyApp*p_app = (CMultiDocumentStudyApp*)AfxGetApp();
EkCreateNewWindow(p_app->m_pNewDocTemplate, this );
CFrameWnd* CMultiDocumentStudyDoc::EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
{
ASSERT_VALID( pTemplate );
ASSERT_VALID( pDocument );
CFrameWnd* pFrame =
pTemplate->CreateNewFrame(pDocument, NULL );
CRect rect;
GetClientRect(pFrame->m_hWnd,&rect);
pFrame->MoveWindow(100,150,rect.Width(),rect.Height());
if( pFrame == NULL )
{TRACE0( "Warning: failed to create new frame.\n" );
return NULL;
}
ASSERT_KINDOF( CFrameWnd, pFrame );
pTemplate->InitialUpdateFrame( pFrame, pDocument );
return pFrame;
}
CMultiDocTemplate * m_pDocTemplate;
CMultiDocTemplate * m_pNewDocTemplate;
2.在App类中的Initlnstance()函数中添加以后程序:
m_pDocTemplate = new CMultiDocTemplate(
IDR_MULTIDTYPE,
RUNTIME_CLASS(CMultiDocumentStudyDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMultiDocumentStudyView));
AddDocTemplate(m_pDocTemplate);
//CMultiDocTemplate * pNewDocTemplate;
m_pNewDocTemplate = new CMultiDocTemplate(
IDR_MULTIDTYPE,
RUNTIME_CLASS(CMultiDocumentStudyDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CNewView));
AddDocTemplate(m_pNewDocTemplate);
3.重载OnFileNew函数(App类中),默认只打开一个视图:
m_pDocTemplate->OpenDocumentFile(NULL);
4.在Doc类中重载OnNewDocument()函数
CMultiDocumentStudyApp*p_app = (CMultiDocumentStudyApp*)AfxGetApp();
EkCreateNewWindow(p_app->m_pNewDocTemplate, this );
CFrameWnd* CMultiDocumentStudyDoc::EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
{
ASSERT_VALID( pTemplate );
ASSERT_VALID( pDocument );
CFrameWnd* pFrame =
pTemplate->CreateNewFrame(pDocument, NULL );
CRect rect;
GetClientRect(pFrame->m_hWnd,&rect);
pFrame->MoveWindow(100,150,rect.Width(),rect.Height());
if( pFrame == NULL )
{TRACE0( "Warning: failed to create new frame.\n" );
return NULL;
}
ASSERT_KINDOF( CFrameWnd, pFrame );
pTemplate->InitialUpdateFrame( pFrame, pDocument );
return pFrame;
}
相关文章推荐
- MFC多文档程序启动时一个文档创建两个视图
- MFC多文档程序启动时一个文档创建两个视图
- (他山之石)MFC学习之路(二)如何在多文档视图中,程序一开始运行,只出现主框架,不打开一个文档?
- MFC 为同一个文档创建不同视图
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- 使程序在启动时不创建一个新文档
- MFC中 创建基于CFormView的文档视图程序
- 程序在启动时不创建一个新文档
- mfc创建一个没有文档类的视图程序
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- MFC创建一个程序启动画面
- MFC中 创建基于CFormView的文档视图程序
- MFC 单文档多视图的静态创建法
- 结合ADO、ADOX和MFC的文档/视图/框架架构创建和打开Ac
- MFC创建的MDI程序 新建一个子文档 主窗口标题自动会被追加上子文档的名字 取消此功能
- 两个Ubuntu创建桌面启动程序的方法
- MFC多文档应用程序同时显示两个视图
- lesson7:GUI:创建一个窗口程序(JFrame),标题栏起名为“浏览器”,有一个菜单条,有“文件”、“编辑”、“查看”3个菜单。“文件”菜单有两个菜单项,一项是“打开”
- 详细讲解如何在MFC单/多文档中创建多视图(具体代码)
- MFC多文档视图界面(MDI)搭建图像处理框架程序总结