我在对话框或者窗口中用BitBlt或者DrawDib画一个位图,但不想在OnDraw或者OnPaint中重绘它,应该怎么来解决重绘的问题?

解决方案 »

  1.   

    “不想在OnDraw或者OnPaint中重绘它”?不太清楚。
    要不试试在你的绘制函数中调用Invalidate刷新。
      

  2.   

    比如说,我在MyFunc()中调用BitBlt()中在一个对话框上画一位图,将对话框最小化后,由于没有在OnPaint()中调用BitBlt()重绘,再最大化后,对话框上的显示的位图就没有了,怎么解决这个问题???
      

  3.   

    好像只能在OnSize里面调用你的绘制函数了
      

  4.   

    楼主说了,他不在OnPaint里面绘图,所以Invalidate应该没效果的。
    不过不知道他为什么要这么设计
      

  5.   

    不调用Invalidate()
    在其他函数中调用
      

  6.   

    在需要重绘时
    1、调用你自己的重绘函数
    2、处理WM_PAINT和WM_ERASEBKGND,避免Windows做默认工作。
      

  7.   

    这个问题是这样的。当你将屏幕进行缩放或移动等操作时,系统会自动发出WM_PAINT消息,然后OnPaint()会捕捉这个消息,一般是在这里进行重画。
       但你说你不想在上述函数中重画,我想有两种方法 ,第一:用系统捕捉消息函数,来捕捉WM_PAINT消息,然后再回调函数中重画(我看过这方面的资料具体的没实践过)。
     第二:你可以自定义消息,用自定义的函数来捕捉这个自定义消息也可以重画。我想我给你这些提示,你看看这方面的书一定可以实现的。祝你成功!
      

  8.   

    呵呵
    那不如在OnPaint()调用你的绘图函数,做的这么烦
      

  9.   

    楼主,建议你用"层窗口"吧!!!层窗口不会接收普通的WM_PAINT,所以它不用OnPaint来维护它的外形和大小,并且它变化的时候,系统也不会向别的窗口发WM_PAINT的消息!!建议找一些这方面的资料来看!