我在单文档的客户区画了很多数学函数的曲线,但最小化或窗口改变后就消失了,
我知道要重写视图类的OnDraw函数,但这较麻烦,几乎代码要重写一遍,
敢问:有没有简单的方法把视图客户区最小化时保存下来,重现时就显示出来?

解决方案 »

  1.   

    OnDraw
    中调用你的函数Invalidate调用Ondarw
      

  2.   

    谢  he_zhidan(何志丹:www.vcshare.net) 
    可是我的函数里面还有些别的功能,不好直接调用。
    并且,画那些曲线也很麻烦,要是在OnDraw再重复一遍,会很花时间去写。
      

  3.   

    InvalidateRect() :刷新部分区域
      

  4.   

    我不觉得所谓的“在OnDraw再重复一遍”“会很花时间去写”哦:
    比如你要画的那些曲线是通过一个菜单或按钮的响应函数去画的,那你把OnXXXXX里面的所有代码都放到另一个函数DrawCurves里,在这个OnXXXXX里和OnDraw里都调用DrawCurves这个函数就结了,完全不至于多花时间吧?不过要注意的是,你需要一个标志来表明是不是曾经点击了那个菜单或按钮以决定在OnDraw里调用不调用DrawCurves,这样才能让二者同步。(这样的话,你甚至可以在OnXXXXX里面都不用调用DrawCurves,只是简单地设置这个标志,然后调用Invalidate(),由OnDraw负责帮你调用DrawCurves。)
      

  5.   

    所有的内容放在内存图象(申请一个大小一致的),OnDraw只负责将这个内存图象画到相应的界面,不用重复计算该画写什么。
      

  6.   

    在你的函数里将图像绘制到内存DC中,在OnDraw()里只要将内存DC绘制到屏幕DC即可,就是BitBlt()。