我想把单文档视图拆分成:
        1:先把单文档视图拆分成2行1列
      
        2:在把上面的一行拆分成一列2行
     
        3:在把第2列拆分成2行1列
   如何实现?

解决方案 »

  1.   

    CRect rect;
    CSize size;
    this->GetClientRect(&rect);
    size = rect.Size(); m_wndSplitter1.CreateStatic(this, 2, 1);
    m_wndSplitter2.CreateStatic(&m_wndSplitter1, 1, 2, WS_CHILD | WS_VISIBLE,
    m_wndSplitter1.IdFromRowCol(0, 0));
    m_wndSplitter3.CreateStatic(&m_wndSplitter2, 2, 1, WS_CHILD | WS_VISIBLE,
    m_wndSplitter2.IdFromRowCol(0, 1));    m_wndSplitter3.CreateView(0, 0, RUNTIME_CLASS(CProcessView), size, pContext);
    m_wndSplitter3.CreateView(1, 0, RUNTIME_CLASS(CMessageView), size, pContext);
    // m_wndSplitter1.CreateView(0, 1, RUNTIME_CLASS(CProcessView), size, pContext);
    m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CMboardControlView), size, pContext);
    //m_wndSplitter2.CreateView(0, 1, RUNTIME_CLASS(CProcessView), size, pContext);
    m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CParameterView), size, pContext); SetActiveView((CView*)m_wndSplitter2.GetPane(0, 0)); m_wndSplitter1.SetRowInfo(0, 620, 1);
    m_wndSplitter2.SetColumnInfo(0, 920, 1);这是我的代码,编译出现错误原因
      

  2.   

    CSplitterWnd,重载CMainFrame类的OnCreateClient函数
      

  3.   

    重载框架窗口的虚函数CreateClient函数。分割窗口对象也是一个窗口。其占据了框架窗口的客户区CMainFram::CreateClient()
    {
    if(m_wndSplitter1.CreateStatic(this, 2, 1)==NULL)
         return FALSE;
    m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CParameterView), size, pContext);if(m_wndSplitter2.CreateStatic(&m_wndSplitter1, 1, 2, WS_CHILD  |  WS_VISIBLE,m_wndSplitter1.IdFromRowCol(0, 0))==NULL)
    return FALSE;
    m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CMboardControlView), size, pContext);if(m_wndSplitter3.CreateStatic(&m_wndSplitter2, 2, 1, WS_CHILD | WS_VISIBLE,
    m_wndSplitter2.IdFromRowCol(0, 1))==NULL)
    return FALSE;
    m_wndSplitter3.CreateView(0, 0, RUNTIME_CLASS(CProcessView), size, pContext);
    m_wndSplitter3.CreateView(1, 0, RUNTIME_CLASS(CMessageView), size, pContext);
    SetActiveView((CView*)m_wndSplitter2.GetPane(0, 0));m_wndSplitter1.SetRowInfo(0, 620, 1);
    m_wndSplitter2.SetColumnInfo(0, 920, 1);
    试试这样,应该没问题。如果编译还是出错。那有可能就是错在RUNTIME_CLASS这里。能作为分割窗口的视图的类。必须有动态创建的能力。在你的视图类的头文件和CPP文件中分别加入以下宏
    DECLARE_DYNAMIC
    IMPLEMENT_DYNAMIC
      

  4.   

    回复zhong_yong_fei:尝试你的方法还是没用,不知道怎么回事
      

  5.   

    调试说是拆分第3次时说是找不到父窗口的句柄- pWnd->m_hWnd 0x00080afc {unused=??? } HWND__ *
    unused CXX0030: Error: expression cannot be evaluated
      

  6.   

    你的自己定影View中,头文件有动态创建的这俩个宏吗?