Фон окна


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

Система красит фоном окно или дает окну возможность сделать так, чтобы отправить своё сообщение WM_ERASEBKGND, когда приложение вызывает BeginPaint. Если приложение не обрабатывает сообщение, но передает его DefWindowProc, то система стирает фон, закрашивая его узором кисти для фона, определенного классом окна. Если кисть недопустима или у класса нет кисти для фона, система устанавливает член fErase в структуре PAINTSTRUCT так, что BeginPaint возвращается, но не выполняет какое-либо другое действие. У приложения затем, в случае необходимости, появляется второй шанс нарисовать фон окна.

Если приложение обрабатывает WM_ERASEBKGND, то оно должно использовать параметр wParam сообщения, чтобы нарисовать фон. Этот параметр содержит в себе дескриптор контекста устройства (DC) отображения для окна. После рисования фона приложение должно возвратить ненулевое значение. Это гарантирует то, что функция BeginPaint ошибочно не установит член fErase структуры PAINTSTRUCT в ненулевое значение (указывая, что фон должен быть стерт), когда приложение обрабатывает последующее сообщение WM_PAINT.

Приложение может определить кисть для фона класса, назначая дескриптор кисти или значение системного цвета в члене hbrBackground структуры WNDCLASS, регистрируя класс функцией RegisterClass. Функция GetStockObject или CreateSolidBrush могут быть использованы, чтобы создать дескриптор кисти. Значение системного цвета может быть одним из определенных для функции SetSysColors. (Значение должно быть увеличено на единицу перед тем, как оно назначается в члене структуры.

Приложение может обработать сообщение WM_ERASEBKGND даже при том, что кисть для фона класса определяется. Это типично для приложений, которые позволяют пользователю изменить цвет фона окна или узор для заданного окна, не оказывая влияния на другие окна в классе. В таких случаях, приложение не должно передавать это сообщение в DefWindowProc.

Приложениям нет необходимости выравнивать кисти, потому что система рисует кистью, используя начало координат окна как отправную точку. Учитывая это, пользователь может перемещать окно, не влияя на выравнивание узорных кистей.

Назад в оглавление
На главную страницу
Переведено 25.12.2010 17:06 ©Copyright V. Sokovikov
Hosted by uCoz