切分窗口,改变窗口大小发生错误。

fage87295970 2006-06-26 08:28:46
我划分了几个窗口,想改变整个窗口的时候,划分出来的窗口能随之变化,我是这样写的

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
CRect rect;
GetClientRect(&rect);
m_wndSplitter.SetRowInfo(0,rect.Height(),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);
}
出现了内存不能读的错误。为什么呢?!麻烦各位大虾指点!!!
还有表示数据的那部分是叫客户区吗?GetClientRect(&rect);就是得到这客户区的大小,是这样的吧?
...全文
184 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fage87295970 2006-06-27
  • 打赏
  • 举报
回复
谢谢楼上的两位,内存读没问题了,但按最大化或拖动窗口还是不行,划分的小窗口没有按照比例改变大小啊。
不好意思,我分数不够,暂时就这么多的,我攒了份再追加的。
bestbear 2006-06-27
  • 打赏
  • 举报
回复
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
CRect rect;
GetClientRect(&rect);
if(m_wndSplitter.m_hWnd && m_wndSplitter2.m_hWnd && m_wndSplitter3.m_hWnd)
{
m_wndSplitter.SetRowInfo(0,rect.Height(),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);
}
}
化外之民 2006-06-27
  • 打赏
  • 举报
回复
因为主窗口还没建立前就会调用一次OnSize()
这是m_wndSplitter还没有建立,所以在此之前应该判断一下m_wndSplitter是否存在。
fage87295970 2006-06-27
  • 打赏
  • 举报
回复
谢谢,搞定了。
bestbear 2006-06-27
  • 打赏
  • 举报
回复
m_wndSplitter.SetColumnInfo(0, rect.Width()/2, 10);
m_wndSplitter.SetColumnInfo(1, rect.Width()/2, 10);
m_wndSplitter.RecalcLayout();

15,975

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧