Сообщение WM_PAINT


Сообщение WM_PAINT отправляется тогда, когда система или другое приложение делают запрос, чтобы окрасить часть окна приложения. Сообщение отправляется тогда, когда вызывается  функция UpdateWindow или RedrawWindow, или когда от функции DispatchMessage приложение получает сообщение WM_PAINT, используя функции GetMessage или PeekMessage.

Окно получает это сообщение через свою функцию WindowProc.

Синтаксис

LRESULT CALLBACK WindowProc(
  HWND hwnd,       // дескриптор окна
  UINT uMsg,       // WM_PAINT
  WPARAM wParam,   // не используется
  LPARAM lParam    // не используется
);

Параметры

wParam

Этот параметр не используется.

lParam

Этот параметр не используется.

Возвращаемые значения

Приложение возвращает нуль, если оно обрабатывает это сообщение.

Замечания

Функция DefWindowProc проверяет достоверность региона обновления. Функция может также отправить сообщение WM_NCPAINT оконной процедуре, если рамка окна должна окрашиваться и отправить сообщение WM_ERASEBKGND, если фон окна должен быть стерт.

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

Окно может получить внутренние сообщения для окраски в результате вызова функции RedrawWindow с установкой флажка RDW_INTERNALPAINT. В этом случае, у окна, возможно, нет региона обновления. Приложение должно вызвать функцию GetUpdateRect, чтобы определить, есть ли у окна регион обновления. Если GetUpdateRect возвращает нуль, приложение не должно вызвать функции BeginPaint и EndPaint.

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

Система отправляет внутреннее сообщение WM_PAINT только один раз. После того, как внутреннее сообщение WM_PAINT возвращается из функции GetMessage или PeekMessage, или отправляется окну функцией UpdateWindow, система не объявляет или не отправляет далее сообщения WM_PAINT до тех пор, пока окно не сделается недействительным, или до тех пор, пока не будет вызвана снова функция RedrawWindow с установленным флажком RDW_INTERNALPAINT.

Для некоторых стандартных органов управления, по умолчанию сообщение WM_PAINT обрабатывается проверкой параметра wParam. Если wParam - не-NULL, орган управления предполагает, что это значение - HDC и рисует, используя этот контекст устройства

Смотри также

Обзор Окрашивание и рисование, Сообщения окрашивания и рисования, BeginPaint, DefWindowProc, DispatchMessage, EndPaint, GetMessage, GetUpdateRect, PeekMessage, RedrawWindow, UpdateWindow, WM_ERASEBKGND, WM_NCPAINT, WM_PRINT, WM_PRINTCLIENT

Размещение и совместимость WM_PAINT

К Windows Vista Да
л Windows XP Да
и Windows 2000 Professional Да
е Windows NT Workstation Да версии 3.1 и выше
н Windows Me Да
т Windows 98 Да
  Windows 95 Да
С Windows Server 2008 Да
е Windows Server 2003 Да
р Windows 2000 Server Да
в Windows NT Server Да версии 3.1 и выше
е
р
Используемая библиотека -
Используемая DLL -
Заголовочный файл
- объявлено в Winuser.h
- включено в Windows.h
Unicode -
Замечания по платформе Не имеется

Назад в оглавление
На главную страницу
В оглавление справки
Переведено 07.02.2011 19:55 ©Copyright V. Sokovikov
Hosted by uCoz