• MFC中InvalidateRect()与Invalidate()


    InvalidateRect

    声明

    BOOL InvalidateRect(
      HWND hWnd,                   // 窗口句柄
      CONST RECT* lpRect,           // 矩形区域
      BOOL bErase = true            //是否擦除背景
    );
    

      仅对矩形区域(lpRect所指区域)进行重绘;
      bErase指重绘前(WM_PAINT)是否用背景色(默认为白色)对无效区域进行擦除(WM_ERASEBKGND)。默认为true即进行擦除,在这种情况下可能出现闪烁的情况(如北背景为一张图片)。故此时选用false较好,不会闪烁。

    Invalidate

    声明

    void Invalidate( BOOL bErase )
    

      同样,bErase 决定了是否要在WM_PAINT消息前发送WM_ERASEBKGND。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。

    UpdateWindow

    作用:立即重绘窗口

      InvalidateRect与Invalidate都是通过发送WM_PAINT消息进入消息队列中进行排队,当消息队列中有消息时WM_PAINT并不会立即执行,需要等待前面的消息执行完成才执行重绘操作。故想要立即重回窗口就需要调用UpdateWindow函数,该函数可以使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。

  • 相关阅读:
    推荐一个css抖动库
    八佰
    如何将猫猫监控放在博客上
    一个springboot注解不成功的小问题
    vue整理
    springboot整理
    国外服务器:org.xml.sax.SAXParseException
    记一次tomcat运行起来了但是项目没起来的问题
    一个狗血的mysql编码错误
    js中for(var key in o ){};用法小记
  • 原文地址:https://www.cnblogs.com/silentteen/p/7909845.html
Copyright © 2020-2023  润新知