我定义了三个View:CReadView, CWriteView, CllView,准备将界面切分成三大部分:
在CMainFrame定义一下两变量:         
CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitter1;
在CMainFrame::OnCreateClient中的实现代码如下:
m_wndSplitter.CreateStatic(this, 1, 2, WS_CHILD|WS_VISIBLE|WS_BORDER); m_wndSplitter1.CreateStatic(&m_wndSplitter, 2, 1, 
WS_CHILD|WS_VISIBLE|WS_BORDER,
m_wndSplitter.IdFromRowCol(0, 1)); m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CBoardView), CSize(200,200), pContext);
m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CThinkerView), CSize(200,0), pContext);
m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CArticleView), CSize(0,0), pContext);
SetActiveView((CBoardView*)m_wndSplitter.GetPane(0,0));
m_wndSplitter.SetRowInfo(0, 400,0);调试过程中返回值也都正确,可是界面出来后,仍然是一个大界面,大侠请帮我看一下是哪里问题?

解决方案 »

  1.   

    把这句注掉
    //return CFrameWnd::OnCreateClient(lpcs, pContext);
    换成
    return true;
    就行了
      

  2.   

    同意楼上的
    再给你一个我写的step by step
    希望对你有帮助Step by Step
    Step 1.首先Ctrl+W添加两个新类
    CMyListView : CListView
    CMyTreeView : CTreeViewStep 2.然后Project->Add to Project->Components and Controls
    进入Visual C++ Components文件夹
    选择添加Splitter Bar
    一路OK就OK3.你会发现在CMainFrame中发现增加了一下函数
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    删除其中所有的内容
    添加以下代码
    m_wndSplitter.CreateStatic(this ,1, 2);
    m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTreeView), CSize(202, 0), pContext);
    m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CListView), CSize(0, 0), pContext);return TRUE;Step 4.加入CTreeView,CListView的头文件即可Step 5.如有任何问题,可以发信给我
    [email protected]
    我尽力帮你解决---------------------------
                      May you succeed!
                        -------------------------------
    如何写三分窗口
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
    // CG: The following block was added by the Splitter Bar component. m_wndSplitter.CreateStatic(this ,1, 2);
    m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTestView), CSize(202, 0), pContext);
    m_wndSplitter2.CreateStatic(&m_wndSplitter, 2, 1, WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0,1));
    m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CTestView), CSize(0, 150), pContext);
    m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CTestView), CSize(0, 0), pContext);

    return TRUE;
    }
      

  3.   

    return TRUE;
    必须返回真
      

  4.   

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
    CRect rect;
    //GetClientRect(&rect);
    GetWindowRect(&rect);
    CSize panSize1(rect.Width()/2,rect.Height());
    CSize panSize2(rect.Width()/2,rect.Height()/2);
    m_splitterWnd.CreateStatic(this,1,2);
    m_splitterWndH.CreateStatic(&m_splitterWnd,2,1,WS_CHILD | WS_VISIBLE|WS_BORDER,
    m_splitterWnd.IdFromRowCol(0, 1));
      
    if (!m_splitterWnd.CreateView(0,0,RUNTIME_CLASS(CCutWindowView),panSize1,pContext))
    {
    TRACE0("Failed to create first pane\n");
    return FALSE;
    }
    if (!m_splitterWndH.CreateView(0,0,RUNTIME_CLASS(CView2),panSize2,NULL))
    {
    TRACE0("Failed to create first pane\n");
    return FALSE;
    }
    if (!m_splitterWndH.CreateView(1,0,RUNTIME_CLASS(CView2),panSize2,NULL))
    {
    TRACE0("Failed to create second pane\n");
    return FALSE;
    }
    return true;}