InvalidateRect()的最后一个参数是表示擦除背景,还是只是在PAINTSTRUCT中留下标记。

来源:百度知道 编辑:UC知道 时间:2024/07/03 02:28:55
如题,最后一个参数无论是true还是false都擦除不了背景,是不是只是说明一下以前是不是擦除过?

CWnd::InvalidateRect

void InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE );

参数: lpRect 指向一个CRect对象或RECT结构,其中包含了要被加入更新区域的矩形(客户区坐标)。如果lpRect为NULL,则整个客户区都被加入更新区域。
bErase 指定更新区域内的背景是否要被擦除。

说明:
这个函数将给定的客户区矩形加入CWnd更新区域,使该区域无效。无效的矩形与更新区域内的其它区域一起被标记为在发送下一条WM_PAINT消息时需要重画。无效的区域在更新区域内累积,直到发生下一次WM_PAINT调用,这个区域被处理为止,或者直到这个区域被ValidateRect或ValidateRgn成员函数标为有效为止。
bErase参数指定了在处理更新区域的时候是否要擦除更新区域内的背景。如果bErase为TRUE,则当调用BeginPaint函数的时候,将擦除背景。如果bErase为FALSE,则背景保持不变。如果对于更新区域的任何部分bErase为TRUE,则整个区域的背景都会被擦除,而不仅是给定的部分。
当CWnd的更新区域不为空,并且应用程序的窗口消息队列中没有其它消息时,Windows就发送一条WM_PAINT消息。

1表示擦除背景,
0表示保留背景