MFC文档视图中窗口切换

在文档试图应用程序,有时需要在工作区切换试图,以下就是如何切换试图了

1.创建要切换的视图类,同时把构造函数,Create函数改变为public

2.在需要切换试图的动作响应中,加入切换代码,一般是在CMainFrame的菜单响应中加:
void CMainFrame::On32771()
{
 // TODO: Add your command handler code here
 CView *pOldActiveView=GetActiveView();//旧视图
 CMyView *pNewActiveView=new CMyView();//要切换的视图

 CCreateContext context;
 context.m_pCurrentDoc=pOldActiveView->GetDocument();//关联到文档.为什么,文档视图,MFC中每个视图要对应一个文档

 //创建视图并且关联到上下文中,IDD_MYVIEW为视图CMyView的ID号
 pNewActiveView->Create(NULL,NULL,WS_CHILD | WS_BORDER,CFrameWnd::rectDefault,this,IDD_MYVIEW,&context);
 pNewActiveView->UpdateData();

 //视图显示/隐藏
 SetActiveView(pNewActiveView);
 pNewActiveView->ShowWindow(SW_SHOW);
 pOldActiveView->ShowWindow(SW_HIDE);
 
 //重新布局主框架
 pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
 RecalcLayout();

 delete pOldActiveView;
}

3.想要切换回去,一样:
 CMyView *pOldActiveView=(CMyView *)GetActiveView();//旧视图
 CChangeViewView *pNewActiveView=new CChangeViewView();//要切换的视图

 CCreateContext context;
 context.m_pCurrentDoc=pOldActiveView->GetDocument();//关联到文档.为什么,文档视图,MFC中每个视图要对应一个文档

 //创建视图并且关联到上下文中,IDD_MYVIEW为视图CMyView的ID号
 pNewActiveView->Create(NULL,NULL,WS_CHILD | WS_BORDER,CFrameWnd::rectDefault,this,IDD_MYVIEW,&context);
 pNewActiveView->UpdateData();

 //视图显示/隐藏
 SetActiveView(pNewActiveView);
 pNewActiveView->ShowWindow(SW_SHOW);
 pOldActiveView->ShowWindow(SW_HIDE);
 
 //重新布局主框架
 pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
 RecalcLayout();

 delete pOldActiveView;


运行即可实现视图切换

转载于:https://www.cnblogs.com/cwbo-win/p/3371509.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值