MDI程序单文档多视图同时显示

来源:互联网 发布:java重载和覆盖的区别 编辑:程序博客网 时间:2024/05/16 16:59

程序需要一个view一直显示,其它view可以使用同一个doc.一直显示的view可以是是新建MFC工程时CVideoClientApp::InitInstance中的文档默认的view
再新建view时可以通过如下的方法来创建view就能实现一个doc多个view的功能

CView* CMDITestApp::IfViewOpen(CRuntimeClass* pNewViewClass){CMDIChildWnd* pChildWnd = ((CMDIFrameWnd*)AfxGetMainWnd())->MDIGetActive();if(pChildWnd )
CView* CMDITestApp::OpenMyView(CRuntimeClass* pNewViewClass){CView* pView =IfViewOpen(pNewViewClass);if(pView == NULL){CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_MAIN_MENU,NULL,RUNTIME_CLASS(CChildFrame), // custom MDI child frameRUNTIME_CLASS(CDataInfoView));AddDocTemplate(pDocTemplate);CDocument* pDoc = ((CMDIFrameWnd*)AfxGetMainWnd())->MDIGetActive()->GetActiveDocument();CFrameWnd * pFrameWnd = pDocTemplate->CreateNewFrame(pDoc, NULL );pDoc->OnNewDocument();pDocTemplate->InitialUpdateFrame(pFrameWnd, pDoc, FALSE);pFrameWnd->ShowWindow(SW_SHOWMAXIMIZED);}}
CView* CMDITestApp::OpenMyView(CRuntimeClass* pNewViewClass){CView* pView =IfViewOpen(pNewViewClass);if(pView == NULL){CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_MAIN_MENU,NULL,RUNTIME_CLASS(CChildFrame), // custom MDI child frameRUNTIME_CLASS(CDataInfoView));AddDocTemplate(pDocTemplate);CDocument* pDoc = ((CMDIFrameWnd*)AfxGetMainWnd())->MDIGetActive()->GetActiveDocument();CFrameWnd * pFrameWnd = pDocTemplate->CreateNewFrame(pDoc, NULL );pDoc->OnNewDocument();pDocTemplate->InitialUpdateFrame(pFrameWnd, pDoc, FALSE);pFrameWnd->ShowWindow(SW_SHOWMAXIMIZED);}}


	
				
		
原创粉丝点击