关于 Windows 服务应用程序
更新指定的矩形或区域在特定窗口的工作区。
BOOL RedrawWindow(
LPCRECT lpRectUpdate = NULL,
CRgn* prgnUpdate = NULL,
UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE
);
参数
lpRectUpdate
指向 RECT 包含更新矩形坐标的结构。如果 prgnUpdate 包含有效的区域句柄,此参数将被忽略。prgnUpdate
标识更新区域。如果 prgnUpdate 和 lpRectUpdate 是 NULL,整个工作区添加到更新区域。flags
以下标志用于无效窗口:在窗口中重新绘制时,RDW_ERASE 使窗口接收 WM_ERASEBKGND 消息。还必须指定 RDW_INVALIDATE 标志;否则 RDW_ERASE 不起作用。
RDW_FRAME 导致窗口的非工作区的任何部分相交更新区域接收 WM_NCPAINT 消息。还必须指定 RDW_INVALIDATE 标志;否则 RDW_FRAME 不起作用。
RDW_INTERNALPAINT 导致 WM_PAINT 消息已传递到窗口无论窗口是否包含无效区域。
RDW_INVALIDATE 无效 lpRectUpdate 或 prgnUpdate (仅一个可能不是 NULL)。如果两者都 NULL,整个窗口无效。
以下标志用于验证窗口:
RDW_NOERASE 取消任何挂起的 WM_ERASEBKGND 消息。
RDW_NOFRAME 取消任何挂起的 WM_NCPAINT 消息。必须使用此标志 RDW_VALIDATE 和通常用于 RDW_NOCHILDREN。因为它可以防止窗口的部件适当,绘制应谨慎使用此选项。
RDW_NOINTERNALPAINT 取消任何挂起的内部 WM_PAINT 消息。此标志不影响 WM_PAINT 消息产生无效区域。
RDW_VALIDATE 验证 lpRectUpdate 或 prgnUpdate (仅一个可能不是 NULL)。如果两者都 NULL,整个窗口验证。此标志不影响内部 WM_PAINT 消息。
以下标志控件重新绘制时发生。除非这些位之一指定,绘制由 RedrawWindow 功能不执行。
RDW_ERASENOW 导致受影响的窗口(如指定由 RDW_ALLCHILDREN 和 RDW_NOCHILDREN 标志)如果需要,接收 WM_NCPAINT 和 WM_ERASEBKGND 消息,在函数返回之前。WM_PAINT 消息会延迟。
RDW_UPDATENOW 导致受影响的窗口(如指定由 RDW_ALLCHILDREN 和 RDW_NOCHILDREN 标志)接收 WM_NCPAINT,WM_ERASEBKGND,并且,如果需要,WM_PAINT 消息,在函数返回之前。
默认情况下,RedrawWindow 功能的影响的窗口依赖于指定的窗口是否具有 WS_CLIPCHILDREN 样式。子窗口 WS_CLIPCHILDREN 窗口不会受到影响。但是,并非 WS_CLIPCHILDREN 窗口的这些窗口递归验证或无效,直到遇到 WS_CLIPCHILDREN 窗口。窗口是受 RedrawWindow 功能的影响的以下标志控件:
RDW_ALLCHILDREN 在重新绘制的操作包括子窗口,如果有。
RDW_NOCHILDREN 从诸如操作排除子窗口,如果有。
返回值
非零,则窗口已成功重绘的;否则为0。
备注
当 RedrawWindow 成员函数用于无效的一部分的桌面窗口时,该窗口不接收 WM_PAINT 消息。若要绘制桌面,应用程序应使用 CWnd::ValidateRgn、 CWnd::InvalidateRgn、 CWnd::UpdateWindow或 RedrawWindow
要求
Header: afxwin.h