BOOL CMainFrame::ReplaceView(CRuntimeClass * pViewClass)
{
CCreateContext context;
CView * pCurrentView;
// If no active view for the frame, return FALSE because this
// function retrieves the current document from the active view.
if ((pCurrentView=this->GetActiveView())==NULL)
return FALSE;
// If you're already displaying this kind of view, no need to go
// further.
// if ((pCurrentView->IsKindOf(pViewClass))==TRUE)
// return TRUE;
// Get pointer to CDocument object so that it can be used in the
// creation process of the new view.
CDocument * pDoc= pCurrentView->GetDocument();
// Set flag so that document will not be deleted when view is
// destroyed.
BOOL bAutoDelete=pDoc->m_bAutoDelete;
pDoc->m_bAutoDelete=FALSE; // Delete existing view
pCurrentView->DestroyWindow();
// restore flag
pDoc->m_bAutoDelete=bAutoDelete;
// Create new view and redraw.
context.m_pNewViewClass=pViewClass;
context.m_pCurrentDoc=pDoc;
context.m_pNewDocTemplate=NULL;
context.m_pLastView=NULL;
context.m_pCurrentFrame=NULL;
CView * pNewView =(CView *)this->CreateView(&context);
this->SetActiveView(pNewView);
RecalcLayout();
pNewView->OnInitialUpdate();
return true;
}
使用:
((CMainFrame*)AfxGetMainWnd())->ReplaceView(RUNTIME_CLASS(CTableTwo));