关于客户区大小

erensheep 2004-11-30 10:13:31
为什么在CView::OnInitalUpdate()中和在CView::OnDraw()中得到的窗口客户区大小不一样呢?我检查发现好像是在OnInitalUpdate()中调用GetClient()函数得到的客户区高度比OnDraw()中调用GetClient()函数得到的客户区高度多了工具条和菜单的高度,请问如果我想在视图类的OnDraw()函数调用之前就得到客户区真实大小,应该重载什么函数比较合适,或者说我在视图类中如何得到工具条的高度?
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
erensheep 2004-11-30
  • 打赏
  • 举报
回复
什么意思,OnSize得到的矩形仍然是(0,0,0,0);
konista 2004-11-30
  • 打赏
  • 举报
回复
真实大小就是你所的得到的那个比较小的区域,
可以覆盖OnSize(),这个会在OnDraw之前得到
erensheep 2004-11-30
  • 打赏
  • 举报
回复
更不行,在OnCreate里面GetClientRect得到的矩形是(0,0,0,0)
erensheep 2004-11-30
  • 打赏
  • 举报
回复
谢谢,我用的是GetClientRect,写错了,先试试Hnadwolf的方法
handwolf 2004-11-30
  • 打赏
  • 举报
回复
建议在映射WM_CREATE消息,oncreate里头GetClientRect
老夏Max 2004-11-30
  • 打赏
  • 举报
回复
GetClientRect
danyueer 2004-11-30
  • 打赏
  • 举报
回复
应该用 GetClientRect
erensheep 2004-11-30
  • 打赏
  • 举报
回复
sorry,konista(M),你是对的,我刚才调试的时候弄错了,非常感谢!
konista 2004-11-30
  • 打赏
  • 举报
回复
void CTest2View::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);

// TODO: Add your message handler code here
RECT rc;
GetClientRect(&rc);
TRACE2("in size: %d, %d,", rc.left, rc.top);
TRACE2("%d, %d\n", rc.right, rc.bottom);

}
konista 2004-11-30
  • 打赏
  • 举报
回复
不会吧,我做过试验才敢说得,没问题,要不把实例发给你?

15,978

社区成员

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

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