前两天做切割窗口,运行后结果发现切出来的窗口都挤在了一块,源码如下:
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;
本文介绍了一个使用MFC进行窗口分割的实际案例,作者通过调整代码实现了正确的窗口布局,并分享了如何利用SetRowInfo和SetColumnInfo函数来精确控制窗口大小。
7677

被折叠的 条评论
为什么被折叠?



