WM_SETREDRAW消息
将 WM_SETREDRAW 消息发送到窗口,以允许重绘该窗口中的更改,或防止重绘该窗口中的更改。
若要发送此消息,请使用以下参数调用 SendMessage 函数。
SendMessage(
(HWND) hWnd,
WM_SETREDRAW,
(WPARAM) wParam,
(LPARAM) lParam
);
wParam
重绘状态。 如果此参数为 TRUE,则可以在更改后重绘内容。 如果此参数为 FALSE,则更改后无法重绘内容。
lParam
不使用此参数。
如果应用程序处理此消息,则它应返回 0。
如果应用程序必须向列表框添加多个项,则此消息可能很有用。 应用程序可以在 wParam 设置为 FALSE 的情况下调用此消息,添加项,然后在 wParam 设置为 TRUE 的情况下再次调用该消息。 最后,应用程序可以调用 RedrawWindow (hWnd、 NULL、 NULL RDW_ERASE |RDW_FRAME |RDW_INVALIDATE |RDW_ALLCHILDREN) 会导致重新绘制列表框。
备注
应将 RedrawWindow 与指定的标志一起使用,而不是 InvalidateRect,因为前者对于某些控件而言是必需的,这些控件具有自己的非工作区,或者具有导致它们获得非工作区 ((如 WS_THICKFRAME、 WS_BORDER 或 WS_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 [仅限桌面应用] |
标头 |
|