关于 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_ALLCHILDRENRDW_NOCHILDREN 标志)如果需要,接收 WM_NCPAINTWM_ERASEBKGND 消息,在函数返回之前。WM_PAINT 消息会延迟。

    • RDW_UPDATENOW 导致受影响的窗口(如指定由 RDW_ALLCHILDRENRDW_NOCHILDREN 标志)接收 WM_NCPAINTWM_ERASEBKGND,并且,如果需要,WM_PAINT 消息,在函数返回之前。

    默认情况下,RedrawWindow 功能的影响的窗口依赖于指定的窗口是否具有 WS_CLIPCHILDREN 样式。子窗口 WS_CLIPCHILDREN 窗口不会受到影响。但是,并非 WS_CLIPCHILDREN 窗口的这些窗口递归验证或无效,直到遇到 WS_CLIPCHILDREN 窗口。窗口是受 RedrawWindow 功能的影响的以下标志控件:

    • RDW_ALLCHILDREN 在重新绘制的操作包括子窗口,如果有。

    • RDW_NOCHILDREN 从诸如操作排除子窗口,如果有。

返回值

非零,则窗口已成功重绘的;否则为0。

备注

RedrawWindow 成员函数用于无效的一部分的桌面窗口时,该窗口不接收 WM_PAINT 消息。若要绘制桌面,应用程序应使用 CWnd::ValidateRgnCWnd::InvalidateRgnCWnd::UpdateWindowRedrawWindow

要求

Header: afxwin.h

请参见

参考

CWnd 类

层次结构图