Окт 13

Использование сообщения WM_PAINT

Обычно приложение рисует что-либо в окне, реагируя на сообщение WM_PAINT. Система посылает это сообщение окну во всех случаях, требующих перерисовки клиентской области окна. Например, типичными причинами генерации этого сообщения могут быть следующие события: изменились размеры или местоположение окна;
клиентская область была частично или полностью закрыта другим окном или выпадающим меню, а теперь закрывающий объект исчез;
приложение вызвало одну из функций работы с полосами прокрутки. Кроме того, приложение может само инициировать посылку сообщения
WM_PAINT посредством вызова одной из функций, InvalidateRect, InvalidateRgn или UpdateWindow.
Функция UpdateWindow посылает сообщение WM_PAINT непосредственно в оконную процедуру, минуя очередь приложения.
Работа с сообщением WM_PAINT требует от разработчика понимания общей парадигмы отображения графики на экране, которая принята в системах семейства Windows. Желательно структурировать программу таким образом, чтобы информация, необходимая для рисования в клиентской области, готовилась там, где это удобно с точки зрения реализуемого алгоритма. Но само рисование должно выполняться только тогда, когда появляется сообщение WM_PAINT. Впрочем, иногда решаемая задача диктует и другие подходы к рисованию: например, оно может выполняться при обработке сообщений от мыши или от таймера.