有什么办法,禁止窗口最大化,最小化等操作的时候,系统自动OnPaint()了。
不让他自动刷新,这个如何控制。
或者,如何判断,刷新的类型,比如,现在是遮屏导致刷新,或者是最大化刷新,我通过什么办法,能够过滤这些呢?

解决方案 »

  1.   

    WM_SYSTEMCOMMAND,好像是这么个消息.拦一下就成了.
      

  2.   

    最大最小化会有WM_SIZE消息吧,这里面是不是可以invalidaterect(crect(0,0,0,0),false)呢。我建议这个需求得重新定义,或者解决思路要换一个。。最大最小化按MFC流程来必然要刷新,而且如果改变了这个流程估计还会出现N多你意想不到的问题。
      

  3.   

    虽然4楼说的有理,但是非常怀疑invalidaterect(crect(0,0,0,0),false),能否有效果。WM_SIZE和WM_PAINT触发有先后顺序吧
      

  4.   

     你是不想让系统在调用onpaint吗?
    可以设置一个变量在onsize里看窗口大小,如果是最大化或则最小化的时候在onpiant里面直接return就OK啦。
      

  5.   

    通过其他办法绕过非自发OnPaint带来的效率问题。窗口本身尽量让Windows来自己管理,以免自身代码最后变乱。
      

  6.   

    诡异的需求, 最大化 最小化的时候 不应该进行onpaint吗? 很明显需要重新绘制. 你不让重画算什么意思?
      好好审视下自己古怪的代码和需求吧.
      

  7.   

    设个标记,最大最小化的时候设置该标记,OnPaint根据该标记的值最对应的操作行不?
      

  8.   

    OnPaint()设两个状态。被动的时候,bitblt只刷背景。尺寸变化的时候,主动刷新。