新视图有一个计时器,每秒调用一次ondraw函数,但是切换后的视图不自动执行Ondraw函数,怎样切换能解决这个问题。下边是我现在切换视图用的代码
void CMainFrame::switchform(int  nID)
{CView *pOldActiveView=GetActiveView();             //保存旧视图
CView *pNewActiveView=(CView*)GetDlgItem(nID);   //取得新视图 CCreateContext context;   if(pNewActiveView==NULL)
 {  switch(nID)
//这些ID是对话框的标志符,但也可以用其他的标志
{
case IDD_DIALOG1 :
pNewActiveView=(CView*)new dlgview;
context.m_pNewViewClass=RUNTIME_CLASS(dlgview);
break;
case IDD_DIALOG2 :
pNewActiveView=(CView*)new dlgview2;
context.m_pNewViewClass=RUNTIME_CLASS(dlgview2);
break;
case IDD_DIALOG5 :
pNewActiveView=(CView*)new dlgview22;
context.m_pNewViewClass=RUNTIME_CLASS(dlgview22);
break;
case IDD_DIALOG4 :
pNewActiveView=(CView*)new dlgview4;
context.m_pNewViewClass=RUNTIME_CLASS(dlgview4);
break;
}// CCreateContext context;   //将文挡和视图相连
context.m_pCurrentDoc=pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, WS_CHILD|WS_VISIBLE ,
 CFrameWnd::rectDefault, this, nID, &context);
//context.m_pNewViewClass=RUNTIME_CLASS(dlgview2);
pNewActiveView->OnInitialUpdate();
 }  SetActiveView(pNewActiveView);        //改变活动的视图
 pNewActiveView->ShowWindow(SW_SHOW);  //显示新的视图
 pOldActiveView->ShowWindow(SW_HIDE);  //隐藏旧的视图if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(dlgview))
 pOldActiveView->SetDlgCtrlID(IDD_DIALOG1); else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(dlgview2))
 pOldActiveView->SetDlgCtrlID(IDD_DIALOG2); else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(dlgview22))
 pOldActiveView->SetDlgCtrlID(IDD_DIALOG5);
 else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(dlgview4))
 pOldActiveView->SetDlgCtrlID(IDD_DIALOG4);
int nSwitchChildID = pNewActiveView->GetDlgCtrlID();
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);//pOldActiveView->ShowWindow(SW_HIDE);
delete pOldActiveView;   //删除旧视图
 RecalcLayout();          //调整框架窗口
}