原文地址:http://blog.csdn.net/helinlin007/article/details/8072245web
在窗口刷新和绘制的过程当中,经常须要用到窗口刷新函数。通常用于窗口图形刷新的函数有:UpdateWindows()、Invaldate()、InvaldateRect()。函数
先说UpdateWindows(),当调用这个函数的时候,会当即让当前的窗口失效,而后对整个窗口当即进行重绘。UpdateWindows()函数调用的时候直接将OnPaint调用到目标窗口,使目标窗口当即进行重绘。spa
而Invaldate()函数的调用则不会当即引发窗口重绘,由于Invaldate()函数是经过调用OnPaint函数来进行窗口绘制的,而OnPaint函数在消息队列中的处理优先级较低。因此调用Invaldate函数则不会当即引发窗口的重绘。.net
Invaldate函数函数中的参数是用来控制函数是否对背景进行擦除,当使用Invaldate的时候将函数参数设置成true或者不进行设置的时候,函数会对窗口的背景进行擦除,这个时候在刷新窗口的时候,会看到窗口有闪烁现象。而当将参数设置成false的时候,则不会对背景进行擦除,只对绘制的图形进行擦除,则看不到闪烁现象。orm
而InvaldateRece()函数的消息触发机制和UpdateWindow差很少,都是在调用该函数以后,会当即触发调用窗口重绘函数,致使窗口进行重绘。可是InvaldateRect是经过指定失效矩形区域来控制重绘区域的。blog
InvaldateRect函数的参数中也有一个指定是否擦除背景色的参数,具体用法和Invaldate函数的用法一致,在此就再也不敷述。队列