问题:
类Class A继承自CScrollview类类A中实现在界面中画图,具体是在Picture Control控件中画图;
画图时需要调用GetClientRect(rect)获取rect.bottom的值;操作方法:
启动调试,发现获取rect.bottom的值为413,在程序运行的情况下,再次刷新界面,发现得到的rect.bottom值变为396,整个过程中并没有改变界面的的大小。而且发现只有在刚开始启动调试时的值为413,后面刷新时值都为396.为什么会这样?
难道413和396的单位不同么。?不太明白

解决方案 »

  1.   

    发现不管哪个函数都是这样的问题
    比如我在OnDraw()函数以及其他自定义的函数中调用都是同样的现象
      

  2.   

    程序启动的时候会多次调用OnSize,窗口的大小也不是每次都一样大的。你最好等程序启动完后再判断。
    另外,大小不一致又有什么问题呢?你的程序应该可以在不同尺寸下正常显示啊。
      

  3.   


    非常感谢总是那么及时的回复我觉得你分析的2点都有道理
    “窗口的大小也不是每次都一样大的。你最好等程序启动完后再判断。”我如何知道程序启动完成?我程序的思路是,在OnDraw之外先画图,然后在OnDraw内拷贝图,并且在OnDraw里面画坐标轴,发现画坐标轴时获得的rect.bottom(396)与画图时(413)的不一致,从而导致首次运行后,图形不在预期的坐标轴范围之内,即在不同的尺寸下没有正常显示,我这是维护软件,暂时不考虑改动原有的画图方案。
      

  4.   

    不必在"OnDraw之外先画图"
    都放 OnDraw 中,OnDraw 时,客户区 已 定。
      

  5.   

    非常感谢两位高手
    CSDN效率好高把绘图放在OnDraw中问题得到解决
    不过放入OnDraw后还解决了由此带来的其他bug
    主要是因程序而已结贴