我在CMainFrame的OnSize中调用
m_Split.SetRowInfo(0,300,300);
会发生错误?在哪里用呢?
m_Split.SetRowInfo(0,300,300);
会发生错误?在哪里用呢?
解决方案 »
- 求师傅啊!!!
- 通过creat动态创建静态文本框 为什么不放松WM_CTLCOLOR消息(急疯了)
- 请问。Dx9渲染很多三角形(10000个)的问题。
- 如何用CStatic中Create一个GroupBox?
- 请教高手们
- 在VC6中如何屏蔽“文本编辑框”的“回车键”???
- 请问将普通信息转换成Base64码用什么函数啊?
- 选中ListCtrl中的列表的某一项时,如何使其整行选中?
- 如果new一个对象,是不是要显式的调用构造函数
- 怎么样在程序中运行其它应用程序,我用了三种方法没一种成功的,真烦!
- 如何:在点击x退出时,弹出确认对话框,选择取消的话就不退出
- while(myfile.ReadString(str)){}循环中的str的值是变的吗?
if(m_Split.GetSafeHwnd() && GetDlgItem(m_Split.IdFromRowCol(0, 0)))
{
m_Split.SetRowInfo(0,300,300);
m_Split.RecalcLayout();
}
在MainFrame中的OnSize里处理的话,首先要确认分割窗口及相应的View是否已创建好,再改变大小.也可在每个View的初始化中改变大小,在View的OnSize()中也可以做,并在这里改变View中相应控件的位置.
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect);
if(m_wndSplitter && m_bSize) ////第一次OnSize的时候,不执行if内部语句。m_bSize初始化为FALSE
{
m_wndSplitter.SetRowInfo(0,rect.Height()*2.2/3,0);
m_wndSplitter.RecalcLayout();
}
m_bSize = TRUE;}
但如果划分的窗口比较复杂,使用了好几个CSplitterWnd,则可如下:
if(m_wndSplitter && m_wndSplitter2 && m_wndSplitter3)
{
m_wndSplitter.SetRowInfo(0,rect.Height()*2.2/3,0);
m_wndSplitter2.SetColumnInfo(0,rect.Width()/5,0);
m_wndSplitter3.SetColumnInfo(0,rect.Width()/3,0);
m_wndSplitter3.SetColumnInfo(1,rect.Width()/3,0);
m_wndSplitter.RecalcLayout();
}
就行了。rect同上例子