Фон окна
Фон окна — это цвет или узор, используемый для заполнения клиентской области до начала рисования окна. Фон окна охватывает все, что было на экране до перемещения окна, стирая существующие изображения и предотвращая смешивание новых выходных данных приложения с несвязанной информацией.
Система закрашивает фон окна или предоставляет ему возможность сделать это, отправляя ему WM_ERASEBKGND сообщение, когда приложение вызывает BeginPaint. Если приложение не обрабатывает сообщение, но передает его в DefWindowProc, система стирает фон, заполняя его шаблоном в фоновой кисти, заданной классом окна. Если кисть недопустима или класс не имеет фоновой кисти, система задает элемент fErase в структуре PAINTSTRUCT , возвращаемой BeginPaint , но не выполняет никаких других действий. Затем приложение имеет второй шанс нарисовать фон окна, если это необходимо.
Если он обрабатывает WM_ERASEBKGND, приложение должно использовать параметр wParam сообщения для рисования фона. Этот параметр содержит дескриптор контекста отображаемого устройства для окна. После рисования фона приложение должно вернуть ненулевое значение. Это гарантирует, что BeginPaint не будет ошибочно задавать элементу fErase структуры PAINTSTRUCT ненулевое значение (указывающее, что фон должен быть стерт), когда приложение обрабатывает последующее сообщение WM_PAINT .
Приложение может определить фоновую кисть класса, назначив маркер кисти или системное значение цвета члену hbrBackground структуры WNDCLASS при регистрации класса с помощью функции RegisterClass . Для создания дескриптора кисти можно использовать функцию GetStockObject или CreateSolidBrush . Системное значение цвета может быть одним из значений, определенных для функции SetSysColors . (Значение должно быть увеличено на единицы, прежде чем оно будет назначено члену.)
Приложение может обработать сообщение WM_ERASEBKGND , даже если определена фоновая кисть класса. Это типично для приложений, которые позволяют пользователю изменять цвет фона окна или узор для указанного окна, не затрагивая другие окна в классе . В таких случаях приложение не должно передавать сообщение в DefWindowProc.
Приложению необязательно выравнивать кисти, так как система рисует кисть, используя источник окна в качестве точки отсчета. Учитывая это, пользователь может перемещать окно, не влияя на выравнивание кистей шаблона.