在单文档程序里,我想将窗口分成下面这样
先分成2行1列,第1行再分为2列。代码如下,当总有错误,麻烦大家帮忙看一下,非常感谢!
if(m_pSplitter1.CreateStatic(this,2,1)==NULL)
return FALSE;
if(m_pSplitter2.CreateStatic(&m_pSplitter1,1,2,WS_CHILD|WS_VISIBLE,m_pSplitter1.IdFromRowCol(0,0))==NULL)
return FALSE;
m_pSplitter1.CreateView(1,0,RUNTIME_CLASS(CViewCtrlWnd),CSize(0,0),pContext);
m_pSplitter2.CreateView(0,0,RUNTIME_CLASS(CGCodeDrawView),CSize(0,0),pContext);
         m_pSplitter2.CreateView(0,1,RUNTIME_CLASS(CGCodeCtrlWnd),CSize(0,0),pContext); m_pSplitter1.SetRowInfo(0,cy*2/3,10);
m_pSplitter1.SetRowInfo(1,cy/3,10);
m_pSplitter2.SetColumnInfo(0,cx*2/3,10);
m_pSplitter2.SetColumnInfo(1,cx/3,10);

m_pSplitter1.RecalcLayout();
m_pSplitter2.RecalcLayout();

解决方案 »

  1.   

    我想lz想问的是窗口的size不对吗?BOOL bSplitterWnd = FALSE;BOOL CMainFrame::OnCreateClient(...,...)
    {
      if(m_pSplitter1.CreateStatic(this,2,1)==NULL)
    return FALSE;
    if(m_pSplitter2.CreateStatic(&m_pSplitter1,1,2,WS_CHILD|WS_VISIBLE,m_pSplitter1.IdFromRowCol(0,0))==NULL)
    return FALSE;
    m_pSplitter1.CreateView(1,0,RUNTIME_CLASS(CViewCtrlWnd),CSize(0,0),pContext);
    m_pSplitter2.CreateView(0,0,RUNTIME_CLASS(CGCodeDrawView),CSize(0,0),pContext);
      m_pSplitter2.CreateView(0,1,RUNTIME_CLASS(CGCodeCtrlWnd),CSize(0,0),pContext);
     
     bSplitterWnd = TRUE;
     return TRUE;
    }void CMainFrame::OnSize(...)// WM_SIZE消息响应函数
    {
     CFrameWnd::OnSize(...); if(bSplitterWnd)
     {
      m_pSplitter1.SetRowInfo(0,cy*2/3,10);
      m_pSplitter1.SetRowInfo(1,cy/3,10);
      m_pSplitter2.SetColumnInfo(0,cx*2/3,10);
      m_pSplitter2.SetColumnInfo(1,cx/3,10);  m_pSplitter1.RecalcLayout();
      m_pSplitter2.RecalcLayout();
     }
    }