Не использовать Sleep
. Это решение практически не имеет проблем.
Это правда, что WS_EX_COMPOSITED
может обрабатывать CPU, но в основном на XP в моем опыте. По сравнению с Vista и выше наблюдается гораздо меньший рост производительности. Однако, если ваше приложение простаивает, оно не будет перерисовываться. Если ваш процессор равен 100%, а приложение простаивает, вы делаете что-то не так в своей обработке WM_PAINT
. То, что вы описываете, звучит как бесконечный цикл красок. Если вы все сделаете правильно, этого не произойдет, даже если вы используете WS_EX_COMPOSITED
.
Что касается правильного способа двойной буферизации, то BeginBufferedPaint
- это современный способ сделать это, на Vista и выше.