分成左右两个窗口,然后左边个不变,根据用户命令在右边切换到不同的视图,如v1,v2,v3在右边中切换.我在网上看到这个都能实现,我也做了.但是有一个问题啊.如最开始显示的是视图v1,v1中有一个文本框text1,我在这个文本框输入内容.
然后切换到v2或v3
再切换v1,文本框text1中的内容就没了哟,我想把切换之前把视图中的内容保存起来,切换回来的时候还存在.切换视图的代码如下(是基于SDI分割窗口哈.)void CMainFrame::SwitchToView(int nViewType)
{
CView* pView = (CView*)m_wndSplitter.GetPane(0,1);
CRect rcRight,rcFrame;
pView->GetClientRect(&rcRight);
GetClientRect(&rcFrame);
switch(nViewType)
{
case EDITVIEW: //CEditPaneView
{
if(!pView->IsKindOf(RUNTIME_CLASS(CEditPaneView)))
{
//删除旧的视图
m_wndSplitter.DeleteView(0,1);
//创建新的视图
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CEditPaneView),
CSize(rcRight.Width(),rcRight.Height()),NULL);
//调整分布
m_wndSplitter.RecalcLayout();
m_pEditView= (CEditPaneView*)m_wndSplitter.GetPane(0,1);

}
break;
}
 case LISTVIEW: //CListPaneView
{
if(!pView->IsKindOf(RUNTIME_CLASS(CListPaneView)))
{
m_wndSplitter.DeleteView(0,1);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CListPaneView),
CSize(rcRight.Width(),rcRight.Height()),NULL);
m_wndSplitter.RecalcLayout();
m_pListView= (CListPaneView*)m_wndSplitter.GetPane(0,1);
}
break;
}
default:
break;
}}