瓜分窗口的初始大小控制
分割窗口的初始大小控制
生成窗口是这样的
最左边的两个看不到,必须拖动才能出现
------解决方案--------------------
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的宽度和高度是不是有效的值
------解决方案--------------------
我也做过一次,单文档分成多窗格,前面能正常显示,是分割时候设置的宽度高度值,有一个因为涉及到二次分割,所以出现了跟你一样的状况。后来尝试,在分割结束之后,立即再设置一下,应该能实现。
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();