前两天做切割窗口,运行后结果发现切出来的窗口都挤在了一块,源码如下:
GetClientRect(&rc);
if (m_wndSplitterEntire.CreateStatic(this, 2, 1) == NULL)
{
return FALSE;
}
m_wndSplitterEntire.CreateView(1, 0, RUNTIME_CLASS(CBottomView), CSize(rc.Width(), rc.Height() / 4), pContext);
if (m_wndSplitterTop.CreateStatic(&m_wndSplitterEntire, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitterEntire.IdFromRowCol(0, 0)) == NULL)
{
return FALSE;
}
m_wndSplitterTop.CreateView(0, 0, RUNTIME_CLASS(CLeftTopView), CSize(rc.Width() / 4, rc.Height() / 4 * 3), pContext);
m_wndSplitterTop.CreateView(0, 1, RUNTIME_CLASS(CRightTopView), CSize(rc.Width() / 4 * 3, rc.Height() / 4 * 3), pContext);
return TRUE;
后在网上搜了些资料,才发现切割完毕后要用SetRowInfo和SetColumnInfo函数,修改后源码如下:
GetClientRect(&rc);
if (m_wndSplitterEntire.CreateStatic(this, 2, 1) == NULL)
{
return FALSE;
}
m_wndSplitterEntire.CreateView(1, 0, RUNTIME_CLASS(CBottomView), CSize(rc.Width(), rc.Height() / 4), pContext);
m_wndSplitterEntire.SetRowInfo(0, rc.Height() / 4 * 3, 10);
m_wndSplitterEntire.SetRowInfo(1, rc.Height() / 4, 10);
if (m_wndSplitterTop.CreateStatic(&m_wndSplitterEntire, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitterEntire.IdFromRowCol(0, 0)) == NULL)
{
return FALSE;
}
m_wndSplitterTop.CreateView(0, 0, RUNTIME_CLASS(CLeftTopView), CSize(rc.Width() / 4, rc.Height() / 4 * 3), pContext);
m_wndSplitterTop.CreateView(0, 1, RUNTIME_CLASS(CRightTopView), CSize(rc.Width() / 4 * 3, rc.Height() / 4 * 3), pContext);
return TRUE;