SDI切分窗口后,子窗口的大小设置有问题
用SetRowInfo()和SetColumnInfo()函数设置切分后的行和列的信息,用CreatView()设置各个窗口的视图类。但是不管怎么调参数,CBMView也就是最下面的那个窗口和最右边的那个窗口CStateView不变,都太大了
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
CRect rtWnd;
GetClientRect(&rtWnd);
int Width=rtWnd.Width();
int Height=rtWnd.Height();
DWORD dstyle = WS_CHILD | WS_VISIBLE;
dstyle &= ~WS_HSCROLL;
dstyle &= ~WS_VSCROLL;
if(m_wndSplitter1.CreateStatic(this,3,1,dstyle)==NULL)
{
return FALSE;
}
if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,3,dstyle,
m_wndSplitter1.IdFromRowCol(1, 0)) == NULL)
{
return FALSE;
}
if(m_wndSplitter3.CreateStatic(&m_wndSplitter2,2,1,dstyle,
m_wndSplitter2.IdFromRowCol(0, 1)) == NULL)
{
return FALSE;
}
m_wndSplitter1.SetRowInfo( 0, 4*Height/20, Height/20 );
m_wndSplitter1.SetRowInfo( 1, 12*Height/20, Height/20 );
m_wndSplitter1.SetRowInfo( 2, 4*Height/20, Height/20 );
m_wndSplitter2.SetColumnInfo( 0, 4*Width/20, Width/20 );
m_wndSplitter2.SetColumnInfo( 1, 12*Width/20, Width/20 );
m_wndSplitter2.SetColumnInfo( 2, 4*Width/20, Width/20 );
m_wndSplitter3.SetRowInfo( 0, 8*Height/20, Height/20 );
m_wndSplitter3.SetRowInfo( 1, 4*Height/20, Height/20 );
if(NULL == m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CTPView),
CSize(Width,4*Height/20), pContext))
return FALSE;
if(NULL == m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CBMView),
CSize(Width,4*Height/20), pContext))
return FALSE;
if(NULL == m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CCoorView),
CSize(4*Width/20,12*Height/20), pContext))
return FALSE;
if(NULL == m_wndSplitter2.CreateView(0,2,RUNTIME_CLASS(CStateView),
CSize(4*Width/20,12*Height/20), pContext))
return FALSE;
if(NULL == m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CNCView),
CSize(12*Width/20,10*Height/20), pContext))
return FALSE;
if(NULL == m_wndSplitter3.CreateView(1,0,RUNTIME_CLASS(CTEXTView),
CSize(12*Width/20,2*Height/20), pContext))
return FALSE;
/*
int cur;
int min;
m_wndSplitter1.GetRowInfo(0,cur,min);
CString str;
str.Format("cur=%d",cur);
MessageBox(str);
str.Format("min=%d",min);
MessageBox(str);
*/
return TRUE;
}
注释的代码测试了GetRowInfo的结果,结果显示cur=-1,这是什么原因?求助啊