Is there a function that will freeze window repainting for some time, while I do changes to the layout of my dialog?
On Win32, can I disable painting of a window for a period of time?
8.2k views Asked by sashoalm At
3
There are 3 answers
0
On
The way Windows paints is that the system posts your window WM_PAINT
messages instructing you to paint. You can elect to ignore these messages if you so wish, whilst you are modifying the layout, and then force a paint cycle once you have finished modifying the layout.
However, my experience of writing UI on Windows is that you usually don't need to take such steps. Since you are in charge of pumping your message queue, if the window is being refreshed whilst you are in the middle of modifying the layout, then you must have taken action that led to the message queue being pumped.
Put simply, stop pumping the queue whilst modifying the layout and your problems will vanish.
If you find that you actually need to do this, you should send the window a
WM_SETREDRAW
message with thewParam
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 thewParam
set to TRUE.Sample code:
For more information, Raymond Chen's blog article on the subject is a great read.