在一个SDI程序中 我需要点击一下视图A的一个按钮  就切换到视图B
我原本的做法是在试图A中加上一个响应函数。在这个响应函数中调用CSplitterWnd的deleteView 和creatView 
愿意想进行试图的切换
可是发现creatView后使用getpan寻找这个VIew返回的空值。
思考了一下上面的代码  在视图A中调用函数来销毁视图A 感觉这个步骤是导致错误的原因。
那应该怎样实现这个功能呢?  还是有什么其他的错误?分少见谅

解决方案 »

  1.   

    这是个切换分割窗口m_wndSplitter3的第0行0列的视图的例子,不知道有没有用。
    。        DWORD id = m_wndSplitter3.IdFromRowCol(0, 0);
    CWnd *pWnd = m_wndSplitter3.GetPane(0,0);
    pWnd->SetDlgCtrlID(id+1);
    pWnd->ShowWindow(SW_HIDE);
    pWnd->SetParent(this);
    pWnd->UpdateWindow();
    if(nDownViewType%2 == 0)
    {
    m_pShowRevBuf->SetDlgCtrlID(id);
    m_pShowRevBuf->ShowWindow(SW_SHOW);
    m_pShowRevBuf->SetParent(&m_wndSplitter3);
    m_pShowRevBuf->UpdateWindow();
    }
    if(nDownViewType%2 == 1)
    {
    m_pOutPut->SetDlgCtrlID(id);
    m_pOutPut->ShowWindow(SW_SHOW);
    m_pOutPut->SetParent(&m_wndSplitter3);
    m_pOutPut->UpdateWindow();
    }
    m_wndSplitter3.SetActivePane(0, 0);
    m_wndSplitter3.RecalcLayout();
    nDownViewType++;
      

  2.   

    切换视图的时候你可以不删除视图,而是调用CSplitterWnd::SetRowInfo/SetColumnInfo()/ReCalcLayout()来设置它们的显示区域大小