关于单文档多视与MFC的初始化过程.doc

关于单文档多视与MFC的初始化过程.doc

ID:49655821

大小:2.82 MB

页数:43页

时间:2020-03-03

关于单文档多视与MFC的初始化过程.doc_第1页
关于单文档多视与MFC的初始化过程.doc_第2页
关于单文档多视与MFC的初始化过程.doc_第3页
关于单文档多视与MFC的初始化过程.doc_第4页
关于单文档多视与MFC的初始化过程.doc_第5页
资源描述:

《关于单文档多视与MFC的初始化过程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单文档多视的实现多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多。2)通过一个文档关联多个视图,窗口显示整个视图。第二种实现较第一种复杂,这里给出详细的实现方法。Step1:使用VC6.0新建一个Project,命名为:MultiView。除选择单文档属性外,一切使用“默认”方式。于是你可以获得五个类:CMainFrame,CMultiViewApp,CMultiViewDoc,CMultiV

2、iewView,和CAboutDlg; Step2:新建一个新的视图View,添加一个新的MFCClass(Insert->NewClass),基类为CView(或者CView的派生子类,如CEditView等)。类的名字为CAnotherView,这就是新的视图;并为CAnotherView添加GetDocument的实现:CMultiViewDoc*CAnotherView::GetDocument(){      return(CMultiViewDoc*)m_pDocument;} Step3:在CMultiViewApp添加成员变量记录这两个视图:private:

3、      CView*m_pFirstView;      CView*m_pAnotherView;给程序菜单IDR_MAINFRAME添加一个菜单项目“视图”,该菜单项有两个子菜单“视图一”和“视图二”,添加相应函数:(voidCMultiViewApp::OnShowFirstview()和voidCMultiViewApp::OnShowSecondview());注意这里将菜单消息的响应都放在app对象里面,而不是放到MainFrame对象中进行。Step4:创建新的视图:在BOOLCMultiViewApp::InitInstance()中添加代码:…….//

4、创建一个新的视图      CView*m_pActiveView=((CFrameWnd*)m_pMainWnd)->GetActiveView();      m_pFirstView=m_pActiveView;            m_pAnotherView=newCAnotherView();       //文档和视图关联      CDocument*m_pDoc=((CFrameWnd*)m_pMainWnd)->GetActiveDocument();       CCreateContextcontext;      context.m_pCurre

5、ntDoc=m_pDoc;       //创建视图      UINTm_IDFORANOTHERVIEW=AFX_IDW_PANE_FIRST+1;      CRectrect;      m_pAnotherView->Create(NULL,NULL,WS_CHILD,rect,m_pMainWnd,m_IDFORANOTHERVIEW,&context);   …… Step5:现在已经创建了视图,并且都和文档关联起来了。现在要作的就是视图间的转换。在voidCMultiViewApp::OnShowFirstview()中添加实现代码:voidCMultiVi

6、ewApp::OnShowFirstview(){      //TODO:Addyourcommandhandlercodehere      UINTtemp=::GetWindowLong(m_pAnotherView->m_hWnd,GWL_ID);   ::SetWindowLong(m_pAnotherView->m_hWnd,GWL_ID,::GetWindowLong(m_pFirstView->m_hWnd,GWL_ID));   ::SetWindowLong(m_pFirstView->m_hWnd,GWL_ID,temp);       m_pAno

7、therView->ShowWindow(SW_HIDE);      m_pFirstView->ShowWindow(SW_SHOW);                ((CFrameWnd*)m_pMainWnd)->SetActiveView(m_pFirstView);       ((CFrameWnd*)m_pMainWnd)->RecalcLayout();   m_pFirstView->Invalidate();} 在voidCMultiViewApp::OnShowSecondview()中添

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。