参考网上的方法,实现了单文档多视图切换,但是问题来了,每次切换到指定对话框的时候,对话框都要被重新建立一次,也就是每次都要执行OnInitialUpdate函数,而我希望它应该像IE浏览器一样,既使切换到其它窗口了,原先窗口应该只是隐藏,而不是销毁。代码如下,我把其中的delete pOldActiveView注释掉了,还是不能达到效果。
void CMainFrame::SwitchToView(int nView)
{
CView* pOldActiveView = GetActiveView();
    CView* pNewActiveView = (CView*)GetDlgItem(nView);
if (pNewActiveView == NULL) 
{
switch(nView)
{
case IDD_DLG1:
pNewActiveView = (CView*) new CDlg1;
break;
case IDD_DLG2:
pNewActiveView = (CView*) new CDlg2;
break;
}
CCreateContext context;
context.m_pCurrentDoc = pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, WS_BORDER | WS_CHILD, CFrameWnd::rectDefault,this, nView, &context);
pNewActiveView->OnInitialUpdate();

SetActiveView(pNewActiveView); //改变活动的视图
pNewActiveView ->ShowWindow(SW_SHOW); //显示新的视图
pOldActiveView ->ShowWindow(SW_HIDE); //隐藏旧的视图 if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CDlg1))
pOldActiveView->SetDlgCtrlID(IDD_DLG1); else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CDlg2))
pOldActiveView->SetDlgCtrlID(IDD_DLG2); pNewActiveView ->SetDlgCtrlID(AFX_IDW_PANE_FIRST); //delete pOldActiveView; //删除旧视图
RecalcLayout(); //调整框架窗口
}太穷了,只有20分,只有一个人啊对话框