拆分窗口的最大化显示问题
请各位帮忙看一下我的这个程序,我先把窗口拆分成左右2个子窗口,下面是部分代码:
if(!m_wndSplitter.CreateStatic(this,1,2))
{
return FALSE;
}
CRect rect;
GetClientRect(&rect);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CImageView),CSize(rect.Width()*7/10, rect.Height()),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CDataView),CSize(rect.Width()-rect.Width()*7/10, rect.Height()),pContext);
return TRUE;
就是7:3的比例拆分,程序运行显示没问题,但是当我点了最大化按钮以后,拆分的两部分比例好象变成5:5了,这是为什么,该怎么解决啊?帮帮忙,要在哪个地方加什么代码呢?
[解决办法]
OnSize 里面的参数cx cy就是window的rect。Width()
你打上断点看看
我测试发现问题出在m_wndSplitter.SetColumnInfo(0, rect.Width()*7/10, 0);
好像是非法调用函数,传入的参数0(列)有问题,等待答案
[解决办法]
完美解决方案
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if(!m_wndSplitter.IsWindowVisible()) //防止启动出错
return;
m_wndSplitter.SetColumnInfo(0, cx*7/10, 0);//没有必要设置第二列
m_wndSplitter.RecalcLayout();
}