SDI 视图切换函数

void CxxxApp::SwitchView(int vid)
{
 CFrameWnd*   pFrame=(CFrameWnd*)m_pMainWnd;
 CRuntimeClass* pNewView;
 switch(vid)
 {
 default:
  case 1:
   pNewView=RUNTIME_CLASS(CxxxListView);
   break;
  case 2:
   pNewView=RUNTIME_CLASS(CxxxKLineView);
   break;
  case 3:
   pNewView=RUNTIME_CLASS(CxxxRealView);
   break;
  case 4:
   pNewView=RUNTIME_CLASS(CxxxTradListView);
   break;
  case 5:
   pNewView=RUNTIME_CLASS(CxxxHtml);
   break;
 }
   ASSERT(pFrame);  
   ASSERT(pNewView);  
   //   获取当前的视图。  
   CView*   pCurrentView   =   pFrame->GetActiveView();   
  CRect   rcView;  
   if(pCurrentView!=NULL)
   {

   //嵌套了VIEW

    CWnd *p=pCurrentView->GetParent();
    if(p->IsKindOf(RUNTIME_CLASS(CxxxMutiView)))
    pCurrentView=(CView*)p;

    //如果要转化的视图和当前视图为同一类型,就直接退出。
    if   (pCurrentView->IsKindOf(pNewView))  
    {
    pCurrentView->OnInitialUpdate();
     return;  
    }
    //   保存当前视图的位置。
  pCurrentView->GetWindowRect(&rcView);
  pCurrentView->DestroyWindow();
   } 
  
   //   创建新的上下文。  
   CCreateContext   context;  
   context.m_pCurrentFrame       =   NULL;  
   context.m_pLastView               =   NULL;  
   context.m_pNewDocTemplate   =   NULL;  
   
//   context.m_pCurrentDoc           =   pDoc;  
   context.m_pNewViewClass       =   pNewView;    
   
   //   创建视图。  
   CView*   pNewCreateView   =   static_cast<CView*>(pFrame->CreateView(&context));  
 CurHWnd=pNewCreateView->m_hWnd;
   //   移动新视图到原来视图的位置。  
   pFrame->ScreenToClient(&rcView);
   pNewCreateView->OnInitialUpdate(); 
   pNewCreateView->MoveWindow(&rcView);
   pFrame->SetActiveView(pNewCreateView);
   //   更新。  
  SetSocketCmd(vid);
   
//   pFrame->InitialUpdateFrame(pDoc,   TRUE);  
//   pFrame->MoveWindow(0,0,1024,768);//最大化

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值