单文档视图切换后,视图类不能正常使用
我在SDI下进行视图切换,代码如下:
CView *pOldActiveView=GetActiveView(); //保存旧视图
CView *pNewActiveView=(CView*)GetDlgItem(nView); //取得新视图
if(pNewActiveView==NULL)
{
switch(nView)
{
case IDD_VIRTUALORGANIZATION_FORM :
pNewActiveView=(CView*)new CVirtualOrganizationView;
break;
case IDD_PROCESSTEAMSVIEW :
pNewActiveView=(CView*)new CProcessTeamsView;
break;
case IDD_ADJUSTPROCESSSTATEVIEW :
pNewActiveView=(CView*)new CAdjustProcessStateView;
break;
}
CCreateContext context; //将文挡和视图相连
context.m_pCurrentDoc=this->GetActiveDocument();
pNewActiveView->Create(NULL, NULL,(AFX_WS_DEFAULT_VIEW ),
CFrameWnd::rectDefault, this, nView, &context);
pNewActiveView->OnInitialUpdate();
pNewActiveView->Invalidate();
}
SetActiveView(pNewActiveView); //改变活动的视图
pNewActiveView->ShowWindow(SW_SHOW); //显示新的视图
pOldActiveView->ShowWindow(SW_HIDE); //隐藏旧的视图
if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CVirtualOrganizationView))
pOldActiveView->SetDlgCtrlID(IDD_VIRTUALORGANIZATION_FORM);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CProcessTeamsView))
pOldActiveView->SetDlgCtrlID(IDD_PROCESSTEAMSVIEW);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CAdjustProcessStateView))
pOldActiveView->SetDlgCtrlID(IDD_ADJUSTPROCESSSTATEVIEW);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
delete pOldActiveView; //删除旧视图
RecalcLayout(); //调整框架窗口
以上几个视图类都是FormView
切换后显示都正常,但是在视图类里设置的控件不好用了,使用CListCtrl对象插入内容时,会显示内存读取错误。请各位帮忙解决