Многослойные окна

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

Чтобы создать многослойное окно, при вызове функции CreateWindowEx установите расширенный стиль окна WS_EX_LAYERED или вызовите функцию SetWindowLong, чтобы установить стиль WS_EX_LAYERED после того, как окно было создано. После вызова CreateWindowEx, многослойное окно не станет видимым до тех пор, пока не будет вызвана функция SetLayeredWindowAttributes или UpdateLayeredWindow для этого окна. 

Обратите внимание! что стиль WS_EX_LAYERED не может быть использован для дочерних окон.

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

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

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

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz