Функция RedrawWindow (winuser.h)

Функция RedrawWindow обновляет указанный прямоугольник или область в клиентской области окна.

Синтаксис

BOOL RedrawWindow(
  [in] HWND       hWnd,
  [in] const RECT *lprcUpdate,
  [in] HRGN       hrgnUpdate,
  [in] UINT       flags
);

Параметры

[in] hWnd

Дескриптор для перерисовки окна. Если этот параметр имеет значение NULL, окно рабочего стола обновляется.

[in] lprcUpdate

Указатель на структуру RECT , содержащую координаты (в единицах устройства) прямоугольника обновления. Этот параметр игнорируется, если параметр hrgnUpdate определяет регион.

[in] hrgnUpdate

Дескриптор области обновления. Если параметры hrgnUpdate и lprcUpdate имеют значение NULL, в регион обновления добавляется вся клиентская область.

[in] flags

Один или несколько флагов перерисовки. Этот параметр можно использовать для отмены или проверки окна, управления перерисовкой и управления тем, на какие окна влияет RedrawWindow.

Следующие флаги используются для того, чтобы сделать окно недействительным.

Флаг (недействительность) Описание
RDW_ERASE
При перерисовки окно получает сообщение WM_ERASEBKGND . Также необходимо указать флаг RDW_INVALIDATE; В противном случае RDW_ERASE не оказывает никакого влияния.
RDW_FRAME
Приводит к тому, что любая часть неклиентной области окна, пересекающая область обновления, получает сообщение WM_NCPAINT . Также необходимо указать флаг RDW_INVALIDATE; В противном случае RDW_FRAME не оказывает никакого влияния. Сообщение WM_NCPAINT обычно не отправляется во время выполнения RedrawWindow , если не указано RDW_UPDATENOW или RDW_ERASENOW.
RDW_INTERNALPAINT
Вызывает отправку сообщения WM_PAINT в окно независимо от того, является ли какая-либо часть окна недопустимой.
RDW_INVALIDATE
Делает недействительными lprcUpdate или hrgnUpdate (только один может иметь значение, отличное от NULL). Если оба имеют значение NULL, все окно становится недействительным.
 

Для проверки окна используются следующие флаги.

Флаг (проверка) Описание
RDW_NOERASE
Подавляет все ожидающие сообщения WM_ERASEBKGND .
RDW_NOFRAME
Подавляет все ожидающие сообщения WM_NCPAINT . Этот флаг должен использоваться с RDW_VALIDATE и обычно используется с RDW_NOCHILDREN. RDW_NOFRAME следует использовать с осторожностью, так как это может привести к неправильной закрашивать части окна.
RDW_NOINTERNALPAINT
Подавляет все ожидающие внутренние сообщения WM_PAINT . Этот флаг не влияет на WM_PAINT сообщений, полученных из области обновления, отличной от NULL .
RDW_VALIDATE
Проверяет lprcUpdate или hrgnUpdate (только один может иметь значение, отличное от NULL). Если оба имеют значение NULL, проверяется все окно. Этот флаг не влияет на внутренние сообщения WM_PAINT .
 

При перерисовывание выполняется следующий элемент управления флагами. RedrawWindow не будет перекрашивается, если не указан один из этих флагов.

Flag Описание
RDW_ERASENOW
Заставляет затронутые окна (как указано флагами RDW_ALLCHILDREN и RDW_NOCHILDREN) получать WM_NCPAINT и при необходимости WM_ERASEBKGND сообщения до возврата функции. WM_PAINT сообщения принимаются в обычное время.
RDW_UPDATENOW
Приводит к тому, что затронутые окна (как указано флагами RDW_ALLCHILDREN и RDW_NOCHILDREN) при необходимости получают сообщения WM_NCPAINT, WM_ERASEBKGND и WM_PAINT до возврата функции.
 

По умолчанию окна, на которые влияет RedrawWindow , зависят от того, имеет ли указанное окно стиль WS_CLIPCHILDREN. Дочерние окна, которые не являются WS_CLIPCHILDREN стилем, не затрагиваются; Окна, не WS_CLIPCHILDREN, рекурсивно проверяются или становятся недействительными до тех пор, пока не появится окно WS_CLIPCHILDREN. Следующие флаги определяют, на какие окна влияет функция RedrawWindow .

Flag Описание
RDW_ALLCHILDREN
Включает дочерние окна, если таковые имеются, в операцию перерисовки.
RDW_NOCHILDREN
Исключает дочерние окна, если таковые есть, из операции перерисовки.

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

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение.

Комментарии

Если redrawWindow используется для того, чтобы сделать часть окна рабочего стола недействительной, окно рабочего стола не получает сообщение WM_PAINT . Чтобы перекрасить рабочий стол, приложение использует флаг RDW_ERASE для создания сообщения WM_ERASEBKGND .

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-draw-l1-1-0 (появилось в Windows 8)

См. также раздел

GetUpdateRect

GetUpdateRgn

InvalidateRect

InvalidateRgn

Функции рисования и рисования

Общие сведения о рисовании и рисовании

RECT

UpdateWindow