15,978
社区成员
发帖
与我相关
我的任务
分享
void CMainFrame::SwitchToForm(int nForm) //进行视图切换的代码函数
{
//CDocument* pDoc = GetActiveDocument();
CView *pOldActiveView=GetActiveView(); //保存旧视图
CView *pNewActiveView=(CView*)GetDlgItem(nForm); //取得新视图
if(pNewActiveView==NULL)
{
switch(nForm)
//这些ID是对话框的标志符,但也可以用其他的标志
{
case IDD_XUANKE_FORM :
pNewActiveView=(CView*)new CXuankeView;
break;
case IDD_DLG_GRADE :
pNewActiveView=(CView*)new CGradeView;
break;
case IDD_DLG_ADMIN :
pNewActiveView=(CView*)new CAdminView;
break;
case IDD_DLG_TEACHER :
pNewActiveView=(CView*)new CTeacherView;
break;
case IDD_DLG_ADDCLASS :
pNewActiveView=(CView*)new CAddclassView;
break;
}
CCreateContext context; //将文挡和视图相连
context.m_pCurrentDoc=pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, WS_BORDER|WS_GROUP |WS_CHILD ,
CFrameWnd::rectDefault, this, nForm, &context);
pNewActiveView->OnInitialUpdate();
}
SetActiveView(pNewActiveView); //改变活动的视图
pNewActiveView->ShowWindow(SW_SHOW); //显示新的视图
pOldActiveView->ShowWindow(SW_HIDE); //隐藏旧的视图
if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CXuankeView))
pOldActiveView->SetDlgCtrlID(IDD_XUANKE_FORM);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CGradeView))
pOldActiveView->SetDlgCtrlID(IDD_DLG_GRADE);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CAdminView))
pOldActiveView->SetDlgCtrlID(IDD_DLG_ADMIN);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CTeacherView))
pOldActiveView->SetDlgCtrlID(IDD_DLG_TEACHER);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CAddclassView))
pOldActiveView->SetDlgCtrlID(IDD_DLG_ADDCLASS);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
delete pOldActiveView; //删除旧视图
RecalcLayout(); //调整框架窗口
}