Почему есть отдельное сообщение для WM_ERASEBKGND - PullRequest
6 голосов
/ 27 февраля 2012

Я никогда не понимал, почему при удалении фона появляется отдельное сообщение Windows.Я выгляжу немного излишним для меня.Когда я создавал нарисованные владельцем кнопки, я всегда удалял фон из WM_PAINT.Иногда я даже делал всю картину изнутри WM_ERASEBKGND и оставил WM_PAINT пустым.Оба, кажется, работают нормально.Есть ли преимущество в разделении картины на 2 операции?

1 Ответ

4 голосов
/ 27 февраля 2012

Это полностью догадки:

В былые времена заполнение прямоугольника цветом было относительно медленной операцией.Но заполнение одного большого прямоугольника было все же намного быстрее, чем заполнение множества маленьких прямоугольников.

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

...