瓜分窗口的初始大小控制

分割窗口的初始大小控制
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
CRect rc;
GetClientRect(&rc);

BOOL bCreateSpltr=m_wndSplitter.CreateStatic(this, 1, 2);    
m_wndSplitter2.CreateStatic(&m_wndSplitter, 2, 1,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 0));
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CLeftView), CSize(rc.Width()/2, rc.Height()/2), pContext);
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CLeftView2), CSize(rc.Width()/2, rc.Height()/2), pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CRightView), CSize(rc.Width()/2, rc.Height()), pContext);
return TRUE;
}

生成窗口是这样的瓜分窗口的初始大小控制
最左边的两个看不到,必须拖动才能出现瓜分窗口的初始大小控制
------解决方案--------------------
if (!m_wndSplitterH.CreateStatic(this, 1, 2))
return false;
if (!m_wndSplitterH.CreateView(0, 0, RUNTIME_CLASS(CFormviewCommLeft), CSize(280,0), pContext)) 
return false;
m_pFormviewCommLeft = (CFormviewCommLeft*)m_wndSplitterH.GetPane(0, 0);


m_wndSplitterV.CreateStatic(&m_wndSplitterH, 2, 1, WS_CHILD
------解决方案--------------------
WS_VISIBLE, m_wndSplitterH.IdFromRowCol(0,1));

m_wndSplitterV.CreateView(0, 0, RUNTIME_CLASS(CFormviewCommTop), CSize(1024, 150), pContext);
m_pFormviewCommTop = (CFormviewCommTop*)m_wndSplitterV.GetPane(0, 0);


m_wndSplitterH2.CreateStatic(&m_wndSplitterV, 1, 2, WS_CHILD
------解决方案--------------------
WS_VISIBLE, m_wndSplitterV.IdFromRowCol(1,0));

m_wndSplitterH2.CreateView(0, 0, RUNTIME_CLASS(CFormviewCommBottomLeft), CSize(240,0), pContext);
m_wndSplitterH2.CreateView(0, 1, RUNTIME_CLASS(CFormviewCommBottomRight), CSize(600,300), pContext);

m_pFormviewCommBottomLeft = (CFormviewCommBottomLeft*)m_wndSplitterH2.GetPane(0,0);
m_pFormviewCommBottomRight = (CFormviewCommBottomRight*)m_wndSplitterH2.GetPane(0,1);



CSize(280,0)就是指定大小的,楼主看看
CRect rc;
    GetClientRect(&rc);
rc的宽度和高度是不是有效的值


------解决方案--------------------
我也做过一次,单文档分成多窗格,前面能正常显示,是分割时候设置的宽度高度值,有一个因为涉及到二次分割,所以出现了跟你一样的状况。后来尝试,在分割结束之后,立即再设置一下,应该能实现。
	
m_wndSplitter.SetRowInfo(0,3*rc.Height()/4,10);
//设置该分割的行高度,参数:该分割欲设置的行号;理想高度;最小高度
m_wndSplitter.RecalcLayout();