在Win32上,我可以禁用一段时间的窗口绘画吗?

sas*_*alm 4 c++ windows winapi wm-paint

是否有一个函数可以冻结窗口重新绘制一段时间,同时我对对话框的布局进行了更改?

Cod*_*ray 15

如果您发现确实需要这样做,则应该向窗口发送一条WM_SETREDRAW消息,其中wParam设置为FALSE.这表示在更改内容后不应重绘窗口.

如果要重新启用绘图,请发送另WM_SETREDRAW一条消息,这次wParam设置为TRUE.

示例代码:

// Disable window updates
SendMessage(hWnd, WM_SETREDRAW, FALSE, 0);

// Perform your layout here
// ...

// Re-enable window updates
SendMessage(hWnd, WM_SETREDRAW, TRUE, 0);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,Raymond Chen关于此主题的博客文章是一本很好的读物.