aint的传回值也曾是这个装置内容代号。在大多数情况下,
fErase被标志为FALSE(0),这意味著Windows已经擦除了无效矩形的背景。这最早在BeginPaint函式中发生(如果要在视窗讯息处理程式中自己定义一些背景擦除行为,可以自行处理WM_ERASEBKGND讯息)。Windows使用WNDCLASS结构的hbrBackground栏位指定的画刷来擦除背景,这个WNDCLASS结构是程式在WinMain初始化期间登录视窗类别时使用的。许多Windows程式使用白色画刷。以下叙述设定视窗类别结构栏位值:
不过,如果程式通过呼叫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,则 |