为什么在CView::OnInitalUpdate()中和在CView::OnDraw()中得到的窗口客户区大小不一样呢?我检查发现好像是在OnInitalUpdate()中调用GetClient()函数得到的客户区高度比OnDraw()中调用GetClient()函数得到的客户区高度多了工具条和菜单的高度,请问如果我想在视图类的OnDraw()函数调用之前就得到客户区真实大小,应该重载什么函数比较合适,或者说我在视图类中如何得到工具条的高度?

解决方案 »

  1.   

    建议在映射WM_CREATE消息,oncreate里头GetClientRect
      

  2.   

    谢谢,我用的是GetClientRect,写错了,先试试Hnadwolf的方法
      

  3.   

    更不行,在OnCreate里面GetClientRect得到的矩形是(0,0,0,0)
      

  4.   

    真实大小就是你所的得到的那个比较小的区域,
    可以覆盖OnSize(),这个会在OnDraw之前得到
      

  5.   

    什么意思,OnSize得到的矩形仍然是(0,0,0,0);
      

  6.   

    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);

    }
      

  7.   

    sorry,konista(M),你是对的,我刚才调试的时候弄错了,非常感谢!