我用CSplitterWnd把窗口分成了2个部分,
然后我想让窗口回到以前没有被分割的样子,
应该怎么实现呢?
分割的方法也要做相应改变啊?

解决方案 »

  1.   

    public :
      BOOL  m_bSplitter;      //菜单check状态
      CSplitterWnd *m_pwndSplitter;   //指针
    //以上两个变量要在框架创建时初始化为FALSE和NULL
    #define VIEW_SINGLE   0
    void CMainFrame::OnViewSplitter() 
    {
    CView *pOldView;
    CCreateContext context; if( m_bSplitter )
    {
    pOldView = (CView *)GetDlgItem(VIEW_SINGLE);
    ASSERT( m_pwndSplitter );
    ASSERT( pOldView );
    pOldView->ShowWindow(SW_SHOW);
    m_pwndSplitter->ShowWindow(SW_HIDE);
    m_bSplitter = !m_bSplitter;
    return;
    }

    if(m_pwndSplitter == NULL)
    {
    context.m_pCurrentDoc = GetActiveDocument();
    m_pwndSplitter = (CMyWndSplitter *) new CMyWndSplitter;
    // TODO: Add your command handler code here
    if(!m_pwndSplitter->CreateStatic(this,1,2))
    {
    TRACE0("Failed to Create Left StaticSplitter\n");
    return ;
    }
    if(!m_pwndSplitter->CreateView(0,0,RUNTIME_CLASS(CSdiTestView),CSize(150,100),&context))
    {
    TRACE0("Failed to create left first pane\n");
    return ;
    }
    if(!m_pwndSplitter->CreateView(0,1,RUNTIME_CLASS(CMyTreeView),CSize(150,100),&context))
    {
    TRACE0("Failed to create left first pane\n");
    return ;
    }
    }
    pOldView = GetActiveView();
    ASSERT( pOldView );
    m_pwndSplitter->ShowWindow(SW_SHOW);
    pOldView->ShowWindow(SW_HIDE);
    pOldView->SetDlgCtrlID(VIEW_SINGLE); RecalcLayout(); m_bSplitter = !m_bSplitter; }void CMainFrame::OnUpdateViewSplitter(CCmdUI* pCmdUI) 
    {
    // TODO: Add your command update UI handler code here
    pCmdUI->SetCheck( m_bSplitter );
    }//代码我已试过,没问题的。
      

  2.   

    还有就是别忘了框架销毁时要检查m_pwndSplitter如果不为NULL要释放