On Win32, can I disable painting of a window for a period of time?

sashoalm picture sashoalm · Feb 15, 2011 · Viewed 7.4k times · Source

Is there a function that will freeze window repainting for some time, while I do changes to the layout of my dialog?

Answer

Cody Gray picture Cody Gray · Feb 15, 2011

If you find that you actually need to do this, you should send the window a WM_SETREDRAW message with the wParam set to FALSE. This indicates that the window should not be redrawn after its contents are changed.

When you want to re-enable drawing, send another WM_SETREDRAW message, this time with the wParam set to TRUE.

Sample code:

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

// Perform your layout here
// ...

// Re-enable window updates
SendMessage(hWnd, WM_SETREDRAW, TRUE, 0);

For more information, Raymond Chen's blog article on the subject is a great read.