Система не является единственным источником WM_PAINT сообщений. Функция InvalidateRect или InvalidateRgn может косвенно создавать WM_PAINT сообщения для ваших окон. Эти функции помечают всю или часть клиентской области как недопустимую (которую необходимо перерисовать).
В следующем примере процедура окна делает недействительной всю клиентную область при обработке WM_CHAR сообщений. Это позволяет пользователю изменять фигуру, вводя число и просматривая результаты; Эти результаты отрисовываются, как только в очереди сообщений приложения отсутствуют другие сообщения.
В этом примере аргумент NULL , используемый InvalidateRect , указывает всю клиентную область; Аргумент TRUE приводит к удалению фона. Если вы не хотите, чтобы приложение ждало, пока в очереди сообщений приложения не будет других сообщений, используйте функцию UpdateWindow , чтобы принудительно отправить сообщение WM_PAINT немедленно. Если есть какая-либо недопустимая часть клиентской области, UpdateWindow отправляет сообщение WM_PAINT для указанного окна непосредственно в процедуру окна.
Функция InvalidateRect добавляет прямоугольник в область обновления указанного окна. Область обновления представляет часть клиентской области окна, которую необходимо перерисовыть.
Отправляется, когда фон окна должен быть стерт (например, при изменении размера окна). Сообщение отправляется для подготовки недействительной части окна к рисованию.