我现在用CSplitterWnd创建了3个窗口,具体代码如下
    CSplitterWnd m_wndSplitterH;//用于横向切割
    CSplitterWnd m_wndSplitterV;//用于纵向切割
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,
CCreateContext* pContext)
{ m_wndSplitterH.CreateView(0,0,RUNTIME_CLASS(CCNCView),CSize(400,400),pContext);
  m_wndSplitterH.CreateView(1,0,RUNTIME_CLASS(CEngraveView),CSize(400,200),pContext);
  m_wndSplitterV.CreateView(0,1,RUNTIME_CLASS(CControlForm),CSize(200,600),pContext);//设置窗格的初始化的大小
m_wndSplitterV.SetRowInfo(0,10,0);
m_bCreateSplitter=TRUE;
//激活sceneview使得其可以接受命令消息
m_wndSplitterV.SetActivePane(0,0,NULL);
return bResult; 
}
void CMainFrame::OnSize(UINT nType, int cx, int cy) 
{
CRect rect;
GetClientRect(rect);
if (m_bCreateSplitter)
{
m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
m_wndSplitterH.SetRowInfo(0,rect.Height() *3/4,10);
m_wndSplitterH.SetRowInfo(1,rect.Height() *1/4,10);

}
m_wndSplitterV.RecalcLayout();
m_wndSplitterH.RecalcLayout(); 
}
编译没有错误,但是在运行的时候总是报错,我不知道是什么原因,还有各个窗口的大小CSize(400,400),是怎么确定的,希望好心的人帮忙解答一下!!!!

解决方案 »

  1.   

    少用了一个函数 CreateStatic()
      

  2.   

    bResult=m_wndSplitterV.CreateStatic(this,1,2); //这个是将视图划分为一行两列(就是刚才绘图中画的 )
    ASSERT(bResult);
        m_wndSplitterH.CreateStatic(&m_wndSplitterV,2,1,WS_CHILD | WS_VISIBLE,m_wndSplitterV.IdFromRowCol(0,0));//这个是将视图划分为两列不好意思忘写了,这样还是一样的有问题
      

  3.   

    Debug Assertion Failed!!!File: winsplit.cpp
    line:364For information on how your programe   ...........see the Visual C++ documentation on asserts
      

  4.   

    if (m_bCreateSplitter)
    {
    m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
    m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
    m_wndSplitterH.SetRowInfo(0,rect.Height() *3/4,10);
    m_wndSplitterH.SetRowInfo(1,rect.Height() *1/4,10);}
    m_wndSplitterV.RecalcLayout();
    m_wndSplitterH.RecalcLayout();  
    =》
    if (m_bCreateSplitter)
    {
    m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
    m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
    m_wndSplitterH.SetRowInfo(0,rect.Height() *3/4,10);
    m_wndSplitterH.SetRowInfo(1,rect.Height() *1/4,10);m_wndSplitterV.RecalcLayout();
    m_wndSplitterH.RecalcLayout(); 
    }
     
      

  5.   

    m_wndSplitterH.CreateStatic中的windows style写错了?我记得这种情况是三项风格项,但另外一项记不清了。
    再者,你看看debug哪行出错了,不就知道了?