BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) 
{
// TODO: Add your specialized code here and/or call the base class
pContext=NULL;
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CFormView), CSize  (220,100), pContext) ||!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CFormView), CSize(100, 100), pContext))
{
    m_wndSplitter.DestroyWindow();
    return FALSE;
}
m_wndSplitter.DeleteView(0,1);  //删除右边的CSDCS_NCManagerView
m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CFormView),CSize(100,100), pContext);
//return CFrameWnd::OnCreateClient(lpcs, pContext);
return true;
// return CMDIFrameWnd::OnCreateClient(lpcs, pContext);
}
为何老是编译出错呢???是不是RUNTIME_CLASS(CFORMVIEW)不对啊.
出错信息:DEBUG ASSERTION FAILED!

解决方案 »

  1.   

    我是这样切分窗口的!看一下吧!
    CWaterView跟Croam分别是我这个单文档中的两个切分窗口的类!
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
    {
    CRect rect;
    GetClientRect(&rect);
    VERIFY(m_wndSplitter.CreateStatic(this,1,2));
    VERIFY(m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CWaterView),
                                    CSize((int)(rect.Width()*0.75), 100), pContext));
    VERIFY(m_wndSplitter.CreateView( 0,1, RUNTIME_CLASS(Croam),
                                    CSize(200, 100), pContext));
    return TRUE;
    }
      

  2.   

    不过还是先来说说:
    m_wndSplitter.CreateStatic()
    这个你都没有!你的m_wndSplitter.CreateView()
    是用在m_wndSplitter.CreateStatic()之后,指明切分视图对应的视图的。真正的切分动作你就没有,怎么指定视图??还有,为何要把pContext=NULL;呢?
      

  3.   

    您的代码错误太多了,恐怕解释起来你未必看得懂,基础知识需要再学习一些吧,建议多看看MSDN。除了zhdleo(叮东)说的,还有:
    为什么调用m_wndSplitter.DeleteView(0,1)?然后再创建?想不通。
    而把pContent赋值为NULL,简直是错之大矣,对此参数恐怕你根本没有了解其用法。
    像老兄这样编程序,请恕我直言,要想不出错都难!
      

  4.   

    要先分割,在家视图
    if (!m_wndSplitter.CreateStatic(this, 2, 1))
    return FALSE;
    (150,150),pContext);
    m_wndSplitter1.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,0));
    m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CMyView),CSize(150,150),pContext);
        m_wndSplitter1.CreateView(0,1,pContext->m_pNewViewClass,CSize(150,150),pContext);
    m_wndSplitter1.SetRowInfo(0,150,150);
        m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CUppView),CSize(0,0),pContext);