MFC 单文档多视图实现(不是完全原创的,但是也不是直接转的,核心看法原创)
2013-04-01 13:11
288 查看
下面是在主要实现代码和注释
实现类:CMainFrame ——框架类管理视图最好不过,视图为框架的子窗口,所以推荐这种用法,其它的都可以。
消息映射:ON_COMMAND(ID_CHANG,&CMainFrame::ChangeView)
宏定义 #define IDW_PANE_SECOND_MY 32779——此处我放在了resource.h中,这个数值很重要,要是被别的窗口用了这个ID
你的程序会异常的没法运行,主要是不同的窗口都有ID调用GetDlgItem获得的对象可能不是你要的视图
重要提示:核心思想是利用CCreateContext视图文档上下文,将创建的视图与文档关联起来。
说明:上面的代码可以实现来回切换,具体的逻辑自己看,主要借鉴别人的代码,若侵犯您的权利,及时指正修改。
CView *pOldView = GetActiveView();//获得活动视图 ASSERT(pOldView); CView *pNewView = NULL; if(pOldView->IsKindOf(RUNTIME_CLASS(CCSigleTest1View)))//当前活动视图是默认的视图 { pNewView == (CView *)GetDlgItem(IDW_PANE_SECOND_MY); if(pNewView == NULL) { //创建 pNewView = (CView *)(RUNTIME_CLASS(CMyView)->CreateObject());//创建对象用New关键字也可以 if(pNewView == NULL) { return; } CCreateContext context;//视图窗口上下文——用于将文档与新创建的视图关联,没有文档没法创建视图 context.m_pCurrentDoc = pOldView->GetDocument(); pNewView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,CRect(0,0,0,0),this,IDW_PANE_SECOND_MY,&context); pNewView->OnInitialUpdate(); } } //要显示的视图必须设置ID=AFX_IDW_PANE_FIRST //不需要显示的视图设置为其它即可 pNewView = (CView *)GetDlgItem(IDW_PANE_SECOND_MY); SetActiveView(pNewView);//设置当前活动视图——很重要 pNewView->ShowWindow(SW_SHOW);//显示视图、隐藏旧 pOldView->ShowWindow(SW_HIDE); pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);//要显示的视图设置此ID pOldView->SetDlgCtrlID(IDW_PANE_SECOND_MY);//其它视图设置其它ID RecalcLayout(); //重新布局
实现类:CMainFrame ——框架类管理视图最好不过,视图为框架的子窗口,所以推荐这种用法,其它的都可以。
消息映射:ON_COMMAND(ID_CHANG,&CMainFrame::ChangeView)
宏定义 #define IDW_PANE_SECOND_MY 32779——此处我放在了resource.h中,这个数值很重要,要是被别的窗口用了这个ID
你的程序会异常的没法运行,主要是不同的窗口都有ID调用GetDlgItem获得的对象可能不是你要的视图
重要提示:核心思想是利用CCreateContext视图文档上下文,将创建的视图与文档关联起来。
CMyView为自定义继承CView类,其它类都是工程默认类。
说明:上面的代码可以实现来回切换,具体的逻辑自己看,主要借鉴别人的代码,若侵犯您的权利,及时指正修改。
相关文章推荐
- MFC单文档多视图的切换的3种实现
- (未解决)MDI程序开多个视图,用Tab页并排显示。Debug下完全成功显示,Release调试模式下成功显示,但是直接点Release下的exe,部分弹出视图为空
- MFC一一单文档下实现多标签视图(继承CTabView类)
- MFC多视图共用一文档实现
- MFC 单文档工程 实现单文档多视图
- 通过按钮控件实现MDI新建子窗口(MFC自动生成的视图、文档、子框架共用)
- MFC 文档view视图中根据鼠标指定的某个区域控制延迟显示tip的方法(原创)
- MFC项目开发之单文档多视图实现
- FckEditor中从word文档粘贴过来的内容在点击确定清除格式后直接清除而不是再弹出从MS WORD粘贴对话框的实现
- MFC SDI单文档多视图的实现及自由切换(2种实现方式简析)
- mfc 实现一分文档对应多个视图
- MFC单文档多视图的切换的3种实现
- MFC 文档view视图中根据鼠标指定的某个区域控制延迟显示tip的方法(原创)
- MFC中 文档、视图、框架、应用各类直接指针的相互获取
- MFC学习之路(七)实现多文档的单文档多视图
- windows编程 -MFC多文档多视图实现
- MFC项目开发之单文档多视图实现
- MFC 视图、文档、框架(通讯)
- codeigniter框架扩展核心类---实现前台后台视图的分离
- SharePoint 文档库打开HTML 直接浏览而不是打开下载对话框