我现在想把窗口先左右分在再右边上下分,左边的窗体作成QQ的那种形式,右边放一些文本,现在我找到一个例程,做的都擦不多了就是右边没有分,我试过用以前帖子的方法分,但是有错误,请大哥赐教!!!程序如下: if (!wndSplitter.CreateStatic(this, 1, 2)) return false; if (!wndSplitter.CreateView(0, 1, pContext->m_pNewViewClass, CSize(0,0), pContext)) return false; DWORD dwf = CGfxOutBarCtrl::fDragItems|CGfxOutBarCtrl::fEditGroups|CGfxOutBarCtrl::fEditItems|CGfxOutBarCtrl::fRemoveGroups|
CGfxOutBarCtrl::fRemoveItems|CGfxOutBarCtrl::fAddGroups|CGfxOutBarCtrl::fAnimation;
我应该怎么分?

解决方案 »

  1.   

    要用两个CSplitterWnd
    if(!m_wndSplitter.CreateStatic(this, 1, 2))return FALSE;    if(!m_wndSplitter1.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 0)))
          return FALSE; //将第1行0列再分开1行2列
    if(!m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CPlayerView), CSize(200, 300), pContext)) return FALSE;
    if(!m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CInfoView), CSize(200, 60), pContext)) return FALSE;
    // if(!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CPlayerView), CSize(100, 100), pContext))return FALSE;
    if(!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CHSView), CSize(600, 100), pContext)) return FALSE;
    m_wndSplitter.SetColumnInfo(0, 200, 100);我这里是左边分两个View,你自己改一下吧,m_wndSplitter左右分,m_wndSplitter1上下分
      

  2.   

    先左右分,再将右面的上下分 if (m_wndSplitter1.CreateStatic(this, 1, 2)){
    CRect rect;
        GetClientRect(&rect);
        CSize sizeTree = rect.Size();
        CSize sizeList = rect.Size();     sizeTree.cx = rect.Width()*2/7;
        sizeList.cy = rect.Height()-10;
    if (m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CLogAuditTree),sizeTree, pContext))
    {
    if (m_wndSplitter2.CreateStatic(&m_wndSplitter1, 2, 1, WS_CHILD | WS_VISIBLE | WS_BORDER,m_wndSplitter1.IdFromRowCol(0, 1)))
    {
    if (m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CLogAuditList),sizeList, pContext))
    {
    m_editview = m_wndSplitter2.AddView(1, 0, RUNTIME_CLASS(CLogAuditEdit), pContext);
    m_htmlview = m_wndSplitter2.AddView(1,0,RUNTIME_CLASS(CReportHtml), pContext);
    m_moniview = m_wndSplitter2.AddView(1,0,RUNTIME_CLASS(CMoniReport), pContext);
    pTree   = (CLogAuditTree*)  m_wndSplitter1.GetPane(0,0);
    pList   = (CLogAuditList*)  m_wndSplitter2.GetPane(0,0);
    pList->SetUniqueName( "MyView" );
    pEdit   = (CLogAuditEdit*)m_wndSplitter2.GetView(m_editview);
    m_wndSplitter2.ShowView(m_editview); return TRUE;
    }
    }
    }
    }
      

  3.   

    protected: CSplitterWnd m_wndSplitter, m_rightHSplitter;BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
    {
    // create splitter window
    if (!m_wndSplitter.CreateStatic(this, 1, 2))
    return FALSE; m_wndSplitter.SetColumnInfo(0, 200, 0);
    //将右边划分为两行一列
    if(m_rightHSplitter.CreateStatic(&m_wndSplitter, 2,1, WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 1)) == NULL) 
    return FALSE;

    if( !m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(200, 600), pContext) ||
    !m_rightHSplitter.CreateView(0, 0, RUNTIME_CLASS(CTableView), CSize(500, 400), pContext)||
    !m_rightHSplitter.CreateView(1, 0, RUNTIME_CLASS(CInforView), CSize(500, 200), pContext))
    {
    m_wndSplitter.DestroyWindow();
    return FALSE;
    } this->SetActiveView(GetTableView());
    return TRUE;
    }
    最好不要用pContext->m_pNewViewClass
      

  4.   

    pContext->m_pNewViewClass和RUNTIME_CLASS(CPlayerView), 有什么区别???如果用RUNTIME_CLASS(CPlayerView), 是不是CPlayerView得自己创建??