WM_SETREDRAW消息

WM_SETREDRAW 消息发送到窗口,以允许重绘该窗口中的更改,或防止重绘该窗口中的更改。

若要发送此消息,请使用以下参数调用 SendMessage 函数。

SendMessage(
  (HWND) hWnd,
  WM_SETREDRAW,
  (WPARAM) wParam,
  (LPARAM) lParam
);

参数

wParam

重绘状态。 如果此参数为 TRUE,则可以在更改后重绘内容。 如果此参数为 FALSE,则更改后无法重绘内容。

lParam

不使用此参数。

返回值

如果应用程序处理此消息,则它应返回 0。

备注

如果应用程序必须向列表框添加多个项,则此消息可能很有用。 应用程序可以在 wParam 设置为 FALSE 的情况下调用此消息,添加项,然后在 wParam 设置为 TRUE 的情况下再次调用该消息。 最后,应用程序可以调用 RedrawWindow (hWndNULLNULL RDW_ERASE |RDW_FRAME |RDW_INVALIDATE |RDW_ALLCHILDREN) 会导致重新绘制列表框。

注意

应将 RedrawWindow 与指定的标志一起使用,而不是 InvalidateRect,因为前者对于某些控件而言是必需的,这些控件具有自己的非工作区,或者具有导致它们获得非工作区 ((如 WS_THICKFRAMEWS_BORDERWS_EX_CLIENTEDGE) )。 如果控件没有非工作区,则带这些标志的 RedrawWindow 将只执行 与 InvalidateRect 一样多的失效。

wParam 设置为 FALSE 时,将WM_SETREDRAW消息传递给 DefWindowProc 函数会从窗口中删除WS_VISIBLE样式。 尽管窗口内容在屏幕上保持可见,但在此状态下的窗口上调用 IsWindowVisible 函数时返回 FALSE

wParam 设置为 TRUE 时,将WM_SETREDRAW消息传递给 DefWindowProc 函数会将WS_VISIBLE样式添加到窗口(如果未设置)。 如果应用程序将 wParam 设置为 TRUE的WM_SETREDRAW消息发送到隐藏窗口,则该窗口将变为可见。

Windows 10 及更高版本;Windows Server 2016 及更高版本。 系统在窗口上设置名为 SysSetRedraw 的属性,该窗口的窗口过程将 WM_SETREDRAW 消息传递给 DefWindowProc。 可以使用 GetProp 函数获取属性值(如果可用)。 禁用重绘时,GetProp 返回非零值。 启用重绘或窗口属性不存在时,GetProp 将返回零。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头
Winuser.h (包括 Windows.h)

另请参阅