2014-10-14 3 views
2

Если содержимое последнего кадра не изменяется при приеме WM_PAINT, можно ли просто перенаправить операционную систему на повторное изменение окна с использованием старого заднего буфера вместо повторной перерисовки всей сцены к новому буферу и его замену?Повторное использование предыдущего буферного буфера на WM_PAINT

ответ

2

Нет. Нет такого «буфера». И когда вы рисуете, вы не знаете, какие области могут быть покрыты другими окнами. Область отсечения не является хорошим показателем.

Единственное, что вы знаете, это то, что такие районы необходимо перерисовать. Каждое окно заботится о собственной клиентской области. Если вы хотите что-то буферизировать, вы должны сделать это самостоятельно.

Причина проста: представьте, что у вас есть сотни окон. Для хранения буфера для каждого окна неэффективно, когда вид сверху отображается. Поэтому производители Windows решают не хранить содержимое окон и просто уведомлять окна сверху, чтобы перерисовать себя.

OK. Поскольку у нас есть DWM (Dynamic Window Manager), многое изменилось. Но принцип все еще: вы ответственны за рисование. Если вы хотите что-то буферизировать, вы должны сделать это самостоятельно.