有三个切割区域a,b,cb中要进行两个试图的切换,如何实现?谢谢。

解决方案 »

  1.   

    m_wndSplitter.DeleteView(0,1);  //删除某个位置的视图再重新建立
    m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CAlterPersonView),CSize(0,0),NULL);
    m_wndSplitter.RecalcLayout();
      

  2.   

    那就直接用
    CYourView *pview = (CYourView *)m_wndSplitter.GetPane();
    pview->ShowWindow(SW_HIDE);//试试
      

  3.   

    http://community.csdn.net/Expert/topic/3514/3514406.xml?temp=.8678705
      

  4.   

    其实deleteview的效果就是把一个视图和某个位置取消关联,用的都是你先单独创建好的试图,我一直是这么用。
      

  5.   

    如果来回切换的话在又显示的过程中用CreateView是不是有创建了一次?
      

  6.   

    http://www.codeguru.com/Cpp/W-D/splitter/article.php/c1549/
      

  7.   

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
    VERIFY(m_Spliter.CreateStatic(this, 1, 2));
    //创建左视图
    VERIFY(m_Spliter.CreateView(0, 0, RUNTIME_CLASS(CLeftView1), CSize(800, 0), pContext));
    m_pLeftView1 = (CLeftView1 *)m_Spliter.GetPane(0, 0);
    //创建右视图
    VERIFY(m_Spliter.CreateView(0, 1, RUNTIME_CLASS(CRightView), CSize(0, 0), pContext));
    m_pRightView = (CRightView *)m_Spliter1.GetPane(0, 1);
    //改变左视图ID
    m_pLeftView1->SetDlgCtrlID( max ( m_pLeftView1->GetDlgCtrlID(), 
    m_pRightView->GetDlgCtrlID() ) +1);
             m_pLeftView1->ShowWindow(SW_HIDE);
    //以第二个视类创建左视图
    VERIFY(m_Spliter.CreateView(0, 0, RUNTIME_CLASS(CLeftView2), CSize(800, 0), pContext)); 
    m_pLeftView2 = (CLeftView2 *)m_Spliter.GetPane(0, 0);
             return true;
    }
    //以下函数切换左视图
    void CMainFrame::ChangeView() 
    {//以从1转换到2为例
    int lId = m_pLeftView2->SetDlgCtrlID(m_pLeftView1->GetDlgCtrlID());
    m_pLeftView1->SetDlgCtrlID(lId);
    m_pLeftView1->ShowWindow(SW_HIDE);
    m_pLeftView2->ShowWindow(SW_SHOW);
    m_pLeftView2->SetFocus();
    m_Spliter.RecalcLayout();