在切分窗口的一个窗格中需要切换显示两个视图,两个视图都是CScrollView类型的,用
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView), CSize(0,0), pContext);
创建了一个视图,另一个怎么创建?
怎么通过工具条按钮或菜单控制两个视图的切换显示? 

解决方案 »

  1.   

    mainfrm.cpp里面,COpengl和CControl是两个新建的mfc类。BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
    {
    /*return m_wndSplitter.Create(this,
    2, 2,               // TODO: 调整行号和列号
    CSize(10, 10),      // TODO: 调整最小窗格大小
    pContext);*/ CRect rect; //得到整个框架窗口的当前成员大小
    GetClientRect (&rect);
    CSize size = rect.Size ();
    size.cx /= 2; // 理想的列大小
    size.cy /= 2; // 理想的行大小 if (!m_wndSplitter.CreateStatic(this,1,2))
    {
    TRACE0("Failed to create split bar ");
    return FALSE; // failed to create
    }

    if ( !m_wndSplitter.CreateView ( 0,0, RUNTIME_CLASS(COpengl), CSize(size.cx,0), pContext) )
    {
    TRACE0("Failed to create first pane\n ");
    return FALSE; // failed to create
    } if ( !m_wndSplitter.CreateView ( 0,1, RUNTIME_CLASS(CControl), CSize(0, 0), pContext) )
    {
    TRACE0("Failed to create second pane\n ");
    return FALSE; // failed to create
    } return true;
    }
      

  2.   

    首先的问题没有说明白,或者没有说详细。你想怎么切换?左边的换到右边,右边再换到左边?分割窗口顺序是:m_wndSplitter.CreateStatic(this,1,2); //分割一行两列左右两个视窗
    m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyFirstView), CSize(0,0), pContext); //左边视窗的类为CMyFirstView
    m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMySecondView), CSize(0,0), pContext); //右边视窗的类为CMySecondView
      

  3.   

    是在一个窗格中切换两个视图,也就是右边的窗格有时显示View1,有时显示View2,跟左边的窗格没有关系,不知道表述清楚了没有.
      

  4.   

    当然不会丢失信息,你这样是创建的这两个视图是没有关系的,你只是设置了它的顶层位置或者显示和隐藏,不会动那里面的数据的。实现这一点你需要重载SplitterWnd分隔条,为它添加一个函数如AddSwitchableView它添加你想切换的视图类。还有一个函数SwitchView(UINT id, int paneRow, int paneCol),它实现切换视图。网上应该有类似的例子。。
      

  5.   

    http://www.codeproject.com/splitter/DanCMultiViewSplitter.asp[/url]
    [url=http://www.codeproject.com/wtl/switchviews_wtl.asp

    看看
      

  6.   

    失误
    http://www.codeproject.com/splitter/DanCMultiViewSplitter.asp
    http://www.codeproject.com/splitter/DanCMultiViewSplitter.asp
      

  7.   

    谢谢iyranly,你给的参考应该可以.
    先结帖了,有问题回头再问,谢谢大家!