不过,如果程式通过呼叫Windows函式InvalidateRect使显示区域中的矩形失效,则该函式的最後一个参数会指定是否擦除背景。如果这个参数为FALSE(即0),则Windows将不会擦除背景,并且在呼叫完BeginPaint後PAINTSTRUCT结构的fErase栏位将为TRUE(非零)。
PAINTSTRUCT结构的rcPaint栏位是RECT型态的结构。您已经在第三章中看到,RECT结构定义了一个矩形,其四个栏位为left、top、right和bottom。PAINTSTRUCT结构的rcPaint栏位定义了无效矩形的边界,如图4-1所示。这些值均以图素为单位,并相对於显示区域的左上角。无效矩形是应该重画的区域。
PAINTSTRUCT中的rcPaint矩形不仅是无效矩形,它还是一个「剪取」矩形。这意味著Windows将绘图操作限制在剪取矩形内(更确切地说,如果无效矩形区域不为矩形,则Windows将绘图操作限制在这个区域内)。
在处理WM_PAINT讯息时,为了在更新的矩形外绘图,可以使用如下呼叫:
该呼叫在BeginPaint呼叫之前进行,它使整个显示区域变为无效,并擦除背景。但是,如果最後一个参数等於FALSE,则