Invalidate和UpdateWindow的区别

 
  1. Invalidate 在消息队列中加入一条 WM_PAINT 消息,其无效区为整个客户区。
  2. UpdateWindow 直接发送一个 WM_PAINT 消息,其无效区范围就是消息队列中 WM_PAINT 消息(最多只有一条)的无效区。
  3. 效果很明显,当调用 Invalidate 之后,屏幕不一定马上更新,因为 WM_PAINT 消息不一定在队列头部,而调用 UpdateWindow 会使 WM_PAINT 消息马上执行的,绕过了消息队列。
  4. 如果调用 Invalidate 之后想马上更新屏幕,那就加上 UpdateWindow() 这条语句。 

你可能感兴趣的:(Invalidate和UpdateWindow的区别)