Функция
UpdateLayeredWindowФункция
UpdateLayeredWindow модифицирует позицию, размер, форму, содержание и светопроницаемость многослойного окна.Синтаксис
UpdateLayeredWindow( HWND hwnd, HDC hdcDst, POINT* pptDst, SIZE* psize, HDC hdcSrc, POINT* pptSrc, COLORREF crKey, BLENDFUNCTION* pblend, DWORD dwFlags );BOOL |
Параметры
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 |
Нет |
Замечания по платформе |
Не имеется |