Функция UpdateLayeredWindow

Функция UpdateLayeredWindow модифицирует позицию, размер, форму, содержание и светопроницаемость многослойного окна.

Синтаксис

BOOL UpdateLayeredWindow(
    HWND hwnd,
    HDC hdcDst,
    POINT* pptDst,
    SIZE* psize,
    HDC hdcSrc,
    POINT* pptSrc,
    COLORREF crKey,
    BLENDFUNCTION* pblend,
    DWORD dwFlags
);

Параметры

hwnd

[in] Дескриптор многослойного окна. Многослойное окно создается при помощи установки флажка WS_EX_LAYERED при создании окна функцией CreateWindowEx.

hdcDst

[in] Дескриптор контекста устройства (DC) для экрана. Этот дескриптор получается при помощи установки значения ПУСТО (NULL) при вызове этой функции. Этот параметр используется для получения соответствия цвета палитры, когда модифицируется содержание окна. Если hdcDst - ПУСТО (NULL), должна быть использована палитра, заданная по умолчанию.

Если hdcSrc имеет значение ПУСТО (NULL), то и параметр hdcDst должен быть ПУСТО (NULL).

pptDst

[in] Указатель на структуру POINT, которая устанавливает новую экранную позицию многослойного окна. Если текущая позиция не изменяется, параметр pptDst может иметь значение ПУСТО (NULL).

psize

[in] Указатель на структуру SIZE, которая устанавливает новый размер многослойного окна. Если размер окна не изменяется, параметр psize может быть значением ПУСТО (NULL). Если hdcSrc - ПУСТО (NULL), параметр psize должен быть значением ПУСТО (NULL).

hdcSrc

[in] Дескриптор DC для плоскости, которая определяет многослойное окно. Этот дескриптор может быть получен, при помощи вызова функции CreateCompatibleDC. Если форма и визуальный контекст окна не изменяются, hdcSrc может быть значением ПУСТО (NULL).

pptSrc

[in] Указатель на структуру POINT, которая устанавливает местоположение слоя в контексте устройства. Если hdcSrc имеет значение ПУСТО (NULL), параметр pptSrc должен быть также значением ПУСТО (NULL).

crKey

[in] Указатель на значение COLORREF, которое устанавливает цвет клавиши, которая будет использоваться при создании многослойного окна. Чтобы создать COLORREF, используйте макрокоманду RGB.

pblend

[in] Указатель на структуру BLENDFUNCTION, устанавливающую значение прозрачности, которое будет использоваться при создании многослойного окна.

dwFlags

[in] Этот параметр может быть одним из нижеследующих значений.

 

Значение

Предназначение

ULW_ALPHA

Использует параметр pblend как функцию перехода. Если режим изображения на экране - 256 цветов или меньше, действие этого значения то же самое, что и от действия флажка ULW_OPAQUE.

ULW_COLORKEY

Использует параметр crKey как цвет прозрачности.

ULW_OPAQUE

Рисует многослойное непрозрачное окно.

Если параметр hdcSrc имеет значение ПУСТО (NULL), параметр dwFlags должен также быть нулевым.

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

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

Если функция завершается с ошибкой, величина возвращаемого значения - нуль. Чтобы получать расширенные данные об ошибках, вызовите GetLastError.

Замечания

Источниковый DC должен содержать плоскость, которая определяет видимое содержание многослойного окна. Например, Вы можете выбрать точечный рисунок в контекст устройства, полученный при помощи вызова функции CreateCompatibleDC.

Приложение должно вызвать функцию SetLayout с контекст устройства hdcSrc, чтобы должным образом установить режим зеркалирования. Функция SetLayout правильно будет зеркалировать все рисование внутри HDC до тех пор, пока правильно сохраняется текстовый глиф и (необязательно) порядок ориентирования растрового рисунка. Оно не может изменять прорисовку непосредственно в биты не зависящего от устройства растрового изображения (DIB). Для получения дополнительной информации, см. статью Компоновка и зеркалирование окна.

Функция UpdateLayeredWindow сохраняет внешний вид окна на экране. Окна ниже многослойного окна не нуждаются, чтобы быть перерисованными, когда они раскрыты в результате вызова функции UpdateLayeredWindow, потому что система автоматически перерисует их. Это дает возможность полной мультипликации многослойного окна.

Функция UpdateLayeredWindow всегда модифицирует окно полностью. Чтобы модифицировать часть окна, используйте традиционное сообщение WM_PAINT и установите значение перехода, используя функцию SetLayeredWindowAttributes.

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

Для получения дополнительной информации, см. статью Многослойные окна.

Смотри также

Краткий обзор Окна, AlphaBlend, CreateCompatibleBitmap, CreateCompatibleDC, CreateWindowEx, SetLayeredWindowAttributes, SetLayout, SetWindowLong, SetWindowPos, TransparentBlt, COLORREF, RGB, WM_PAINT

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

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Нет

Windows Me

Нет

Windows 98

Нет

Windows 95

Нет

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

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