如何创建单文档多视的结构

只是把一些成型的东西拿来

在许多的多视中都是动态的创建,切换的时候,以前创建的信息都丢失,使用下面的方法,可以动态的切换,原来的视对象信息同样的存在。

1、 首先创建一个 单文档的系统框架结构
2、 在主框架中定义两个对象
   CViewOne * m_pMapView;
     CViewTwo * m_pSceneView;
3、 在框架的中创建对象 m_pSceneView 作为第二个视
         m_pSceneView = new CViewTwo();
     m_pSceneView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
         CRect(-100,-100,-50,-50), this, AFX_IDW_PANE_FIRST + 1, NULL);
 
    // 使其不显示
     m_pSceneView->ShowWindow(SW_HIDE);
 
    
4、 定义两个视窗的切换标志
enum ViewStatus{MapView,DimView} ;
 
 
5、  视窗的切换
 
BOOL CMainFrame::ChangView(ViewStatus m_nView )
{
     CView* pViewAdd;
     CView* pViewRemove;
     CDocument* pDoc = GetActiveDocument();
 
     if(m_nView == m_nCurViewStatus )
         return FALSE;
 
     if((m_nView == DimView)&& (m_nCurViewStatus == MapView))
     {
         if (m_pSceneView == NULL)
         {
              m_pMapView = (CViewOne *)GetActiveView();
         }
         pViewAdd = m_pSceneView;
         pViewRemove = m_pMapView;
         m_nCurViewStatus= DimView;      
     }
     else
     {
         pViewAdd = m_pMapView;
         pViewRemove = m_pSceneView;
         m_nCurViewStatus= MapView;
     }
 
     // 将活动视的child id设置为AFX_IDW_PANE_FIRST
     // 将其它视设置为AFX_IDW_PANE_FIRST以外的值,
     // 这样当调用CFrameWnd::RecalcLayout重新布局窗口时,
     // 才会得到正确的视
     int nSwitchChildID = pViewAdd->GetDlgCtrlID();
     pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
     pViewRemove->SetDlgCtrlID(nSwitchChildID);
     // 显示活动视而隐藏非活动视
     pViewAdd->ShowWindow(SW_SHOW);
     pViewRemove->ShowWindow(SW_HIDE);
     // 将新的活动视连接到文档,并断开原来的视与文档的连接
     pDoc->AddView(pViewAdd);
     pDoc->RemoveView(pViewRemove);
     SetActiveView(pViewAdd);
     RecalcLayout();
     return TRUE;  
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值