if(m_wndSplitter.CreateStatic(this,1,2)==NULL) return FALSE;
if(m_wndSplitter2.CreateStatic(&m_wnd1,2,1,WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0,1))==NULL) 
      return FALSE;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CMyFormView),PaneSize1,pContext); 
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CChatClientView),PaneSize1,pContext);//上面在OnCreateClient函数中代码有问题码?程序运行到第一句就出错了!!我晕~~~~~~m_wndSplitter都不能创建,是怎么回事啊?把上面的代码去掉,程序框架就可以运行(只留return true这一局);
为什么,为什么!!!!!!!!!!!!!提示winsplit.cpp 364行出错,解释为:
ASSERT(pView != NULL);  // panes can be a CWnd, but are usually CViews55555,为什么!!!!!!?????????

解决方案 »

  1.   

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
    // TODO: Add your specialized code here and/or call the base class
    //calculate client size 
    CRect cr; 
    GetClientRect( &cr);

    if ( !m_wndSplitter.CreateStatic( this, 1, 2 ) ) 

    MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR ); 
    return FALSE; 
    }
    if ( !m_wndSplitter.CreateView( 0, 0, RUNTIME_CLASS(CTest9View), CSize(cr.Width()/2, cr.Height()), pContext ) ) 

    MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR );
    return FALSE; 
    }

    if ( !m_wndSplitter.CreateView( 0, 1, RUNTIME_CLASS(CTest9View), CSize(cr.Width()/2, cr.Height()), pContext ) ) 

    MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR );
    return FALSE; 
    }
    /// return CFrameWnd::OnCreateClient(lpcs, pContext);
    return TRUE;
    }
      

  2.   

    你最好这样写:
    if(!m_wndSplitter.CreateStatic(this,1,2)) return false;the functon CreateStatic() and CreateView() of Calss CWndSplitter returns
    a bool value(true if success ,otherwise false)!
      

  3.   

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
    {
    BOOL rnt=m_wndSplitter.CreateStatic(this,2,1);
        rnt|=m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(COpView),
                        CSize(1000,1000),pContext);

    rnt|=m_wndSplitter1.CreateStatic(&m_wndSplitter,1,2,
                              WS_CHILD|WS_VISIBLE,
                              m_wndSplitter.IdFromRowCol(0,0));
    rnt|=m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CDesView),
                        CSize(420,400),pContext);
    rnt|=m_wndSplitter1.CreateView(0,1,RUNTIME_CLASS(CDimLinkView),
                        CSize(0,0),pContext); m_wndSplitter.SetColumnInfo(0,200,0);
    m_wndSplitter.SetRowInfo(0,200,0); return rnt;
    }
      

  4.   

    if(m_wndSplitter.CreateStatic(this,1,2)==NULL) return FALSE;
    //之后对m_wndSplitter切分视图:
    m_wndSplitter.CreateView(,,);
    m_wndSplitter.CreateView(,,);if(m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0,1))==NULL) m_wndSplitter2.CreateView(,,);
    m_wndSplitter2.CreateView(,,);
      

  5.   

    if(!m_wndSplitter.CreateStatic(this,1,2)) return false;
      

  6.   

    if(!m_wndSplitter.CreateStatic(this,1,2)) return false;
      

  7.   

    BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle = WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );Return ValueNonzero if successful; otherwise 0
      

  8.   

    你是计算错误了
    你的目标是实现由两列,第二列为两行,对不对?而你却在加视图时错写成了在第一列第一、二行添加试图。仔细画画看
    if(m_wndSplitter.CreateStatic(this,1,2)==NULL) return FALSE;
    if(m_wndSplitter2.CreateStatic(&m_wnd1,2,1,WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0,1))==NULL) 
          return FALSE;
    ///下面改为(0,1)第二列第一行
    m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CMyFormView),PaneSize1,pContext); 
    ///下面改为(1,1)表示第二列第二行
    m_wndSplitter2.CreateView(1,1,RUNTIME_CLASS(CChatClientView),PaneSize1,pContext);