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

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 文档 单文档多视的实现 多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多。2)通过一个文档关联多个视图,窗口显示整个视图。第二种实现较第一种复杂,这里给出详细的实现方法。 Step 1:使用VC 6.0新建一个Project,命名为:MultiView。除选择单文档属性外,一切使用“默认”方式。于是你可以获得五个类:CMainFrame,CMultiViewApp,CMultiViewDoc,CMultiViewView,和CAboutDlg; ? Step 2:新建一个新的视图View,添加一个新的MFC Class(Insert-New Class),基类为CView(或者CView的派生子类,如CEditView等)。类的名字为CAnotherView,这就是新的视图;并为CAnotherView添加GetDocument的实现: CMultiViewDoc* CAnotherView::GetDocument() { ??????return (CMultiViewDoc*)m_pDocument; } ? Step 3:在CMultiViewApp添加成员变量记录这两个视图: private: ??????CView* m_pFirstView; ??????CView* m_pAnotherView; 给程序菜单IDR_MAINFRAME添加一个菜单项目“视图”,该菜单项有两个子菜单“视图一”和“视图二”,添加相应函数:(voidCMultiViewApp::OnShowFirstview()和voidCMultiViewApp::OnShowSecondview()); 注意这里将菜单消息的响应都放在app对象里面,而不是放到MainFrame对象中进行。 Step 4:创建新的视图:在BOOLCMultiViewApp::InitInstance()中添加代码: ……. //创建一个新的视图 ??????CView* m_pActiveView = ((CFrameWnd*)m_pMainWnd)-GetActiveView(); ??????m_pFirstView = m_pActiveView; ?????? ??????m_pAnotherView = new CAnotherView(); ? ??????//文档和视图关联 ??????CDocument* m_pDoc = ((CFrameWnd*)m_pMainWnd)-GetActiveDocument(); ? ??????CCreateContext context; ??????context.m_pCurrentDoc = m_pDoc; ? ??????//创建视图 ??????UINT m_IDFORANOTHERVIEW = AFX_IDW_PANE_FIRST + 1; ??????CRect rect; ??????m_pAnotherView-Create(NULL,NULL,WS_CHILD,rect,m_pMainWnd, m_IDFORANOTHERVIEW,context); ???…… ? Step 5:现在已经创建了视图,并且都和文档关联起来了。现在要作的就是视图间的转换。在voidCMultiViewApp::OnShowFirstview()中添加实现代码: void CMultiViewApp::OnShowFirstview() { ??????// TODO: Add your command handler code here ??????UINT temp = ::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_pAnotherView-ShowWindow(SW_HIDE); ??????m_pFirstView-ShowWindow(SW_SHOW); ?????????? ??????((CFrameWnd*)m_pMainWnd)-SetActiveView(m_pFirstView);? ??????((CFrameWnd*) m_p

文档评论(0)

dmz158 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档