MFC多文档程序启动时一个文档创建两个视图_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > MFC多文档程序启动时一个文档创建两个视图

MFC多文档程序启动时一个文档创建两个视图

 2010/12/26 9:48:30  wgq837051  http://wgq837051.javaeye.com  我要评论(0)
  • 摘要:1.在App类中创建两个public变量:CMultiDocTemplate*m_pDocTemplate;CMultiDocTemplate*m_pNewDocTemplate;2.在App类中的Initlnstance()函数中添加以后程序:m_pDocTemplate=newCMultiDocTemplate(IDR_MULTIDTYPE,RUNTIME_CLASS(CMultiDocumentStudyDoc),RUNTIME_CLASS(CChildFrame)
  • 标签:程序 MFC 创建 文档 一个 启动

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

}

发表评论
用户名: 匿名