Здравствуйте админ, скажите как включить комплекс прозрачного графического пользовательского интерфейса Aero Glass в Windows 8.1 и Windows 10, до ужаса надоел интерфейс Metro? В поддержке Майкрософт сказали, что в Windows 8.1 «эффекта стекла» нет и в Windows 10 его тоже не будет, но я не раз видела в интернете скриншоты прозрачных окон операционной системы Windows 8.1, и возникает вопрос, как люди его включают? Очень нравятся визуальные эффекты AERO в Windows 7, как бы их перенести в Windows 8.1.
AERO Glass для Windows 10
Привет друзья! Интерфейс Aero Glass (прозрачность или эффект стекла) впервые появился в Windows Vista и был доведён до совершенства в Windows 7, но с выходом Windows 8 стало понятно, что настало время однообразного типографского интерфейса Metro. Совсем недавно Майкрософт вроде бы обещала возвращение Aero Glass в Windows 10, но с выходом Windows 10 Technical Preview надежды любителей ажурного интерфейса спали на нет.
Кстати, отсутствие Aero Glass, это одна из многих причин, по которым пользователи не хотят переходить на Windows 8.1 и до сих пор сидят на Windows 7.
Тем не менее выход есть в одной небольшой программке.
Идём на сайт
http://www.glass8.eu/download
и жмём Installer (32-bit+64-bit Windows).
Нам на компьютер скачивается установщик, запускаем его.
Принимаем лицензионное соглашение и устанавливаем программу
Next
После установки программы Вы не узнаете своей Windows 8.1, Windows 10. Как видим Aero Glass (прозрачность) присутствует во всей красе.
Для 100% эффекта настроим один параметр. Щёлкнем правой мышью на рабочем столе и выберем «Персонализация».
Щёлкните правой мышью на кнопке «Цвет»
Выберите цвет окон и панели задач, также выберите степень прозрачности окон, она настраивается в пункте Интенсивность цвета.
Прозрачное оформление окон, приглянувшееся многим пользователям в Windows 7, пропало еще при выходе «восьмерки». До релиза Windows 10 был шанс, что технология Aero снова появится среди визуальных эффектов(ведь вернули разработчики долгожданную кнопку «Пуск»), однако этого не произошло.
Компания Microsoft в Windows 10 решила не возвращаться к старым методам оформления, благополучно забыв о технологии Aero. Но мириться с таким порядком необязательно: вы можете самостоятельно добавить в систему эффект прозрачных окон.
Используя программу Aero Glass
Раз нет встроенных инструментов, позволяющих решить вопрос, как включить Aero в Windows 10, то придется прибегнуть к возможностям сторонней программы. Знакомьтесь – Aero Glass, приложение, позволяющее реализовать эффект стекла для классического интерфейса Windows 10.
Aero Glass разработана для Windows 8.1, но её последняя версия корректно работает и на «десятке».
Совет! Перед установкой Aero Glass и изменением интерфейса рекомендуется создать дополнительную точку восстановления.
Давайте посмотрим, как активировать Aero в Windows 10 с помощью указанной утилиты:
- На официальном сайте в разделе «Download» скачайте последнюю версию программы.
- Запустите инсталлятор, примите условия лицензионного соглашения и выберите место для установки.
- Проверьте, чтобы была отмечена только инсталляция Aero Glass theme. Ниже расположено еще два пункта, генерирующие прозрачные заголовки для универсальных приложений, однако они требуют внесения потенциально опасных изменений, поэтому лучше не отмечать эти опции.
- Нажмите «Next» и дождитесь окончания установки.
После завершения работы мастера установки вы увидите, что окна стали прозрачными. Изменения будут внесены автоматически, вам не нужно менять тему, чтобы включить Aero.
Для того, чтобы поменять степень прозрачности, нажмите Win+R и введите команду “rundll32.exe shell32.dll,Control_RunDLL desk.cpl,Advanced,@Advanced”. Появится окно изменения цвета, где меняя уровень интенсивности, меняется и уровень прозрачности.
После установки программы, в правом нижнем углу экрана, появляется водяной знак.
Видео
Для наглядности предлагаем посмотреть видео инструкцию, с подробным описанием включения эффекта прозрачности окон.
Вывод
Решая проблему, как активировать Windows 10 Aero, не забывайте о стабильной работе компьютера. Использование твиков и внесение потенциально опасных изменений может привести к потере данных. Поэтому при установке Aero Glass не активируйте распространение эффекта на универсальные приложения и не забывайте о создании точки восстановления для быстрого отката системы.
Шаг 1: Подготовка
Все действия по восстановлению прозрачности как в «семёрке» предполагают манипуляции с системными файлами. Поэтому перед тем, как к ним приступить, мы рекомендуем подготовиться — создать резервную копию важных данных. Способов выполнения этой операции существует несколько, а если вы не можете определиться, поможет статья далее.
Подробнее: Как сделать резервную копию Windows 10
Шаг 2: Включение прозрачности
В ОС Windows, начиная с 8, компания Microsoft переработала дизайн и полностью убрала режим прозрачности, аналогичный таковому в предыдущей, 7 версии . Поэтому чтобы его включить, придётся установить программу от стороннего разработчика, которая называется Aero Glass.
Важно! Последней версией «десятки», которая поддерживается этим приложением, является 1909! На более новых ревизиях программа работать не будет!
Скачать Aero Glass с официального сайта
- Несмотря на то что в названии программы указано, что она предназначена для Windows 8, последняя версия (первая в списке) прекрасно работает и с десяткой. Для скачивания кликните по ссылке «Installer (64-bit Windows)».
- Сохраните исполняемый файл в любое место на жёстком диске, затем запустите его.
- Для продолжения понадобится ознакомиться с лицензионным соглашением и принять его.
- Выберите папку, куда хотите установить приложение.
- Здесь выберите стиль, который будет использоваться для обеспечения эффекта прозрачности. Вариант «Win10 Acrylic Design» делает его похожим на существующие параметры в десятке, тогда как «Win8 RP Aero Glass Design» больше похож на восьмую и седьмую версии «окон». Опция «Protect Aero Glass by adjusting access permissions» предназначена для защиты программы от антивирусов – она вносит изменения в систему (добавляет несколько файлов), что большинство защитного ПО воспринимает как атаку и реагирует соответствующим образом. Следовательно, если у вас установлен сторонний пакет защиты, а не только «Защитник Microsoft», данную настройку понадобится включить. Для продолжения нажмите «Next».
- Нажмите «Install» для начала установки.
- По окончании установки нажмите «Finish». Окна при этом должны стать прозрачными.
- Прямых настроек данное приложение не предоставляет, поэтому доступно только изменение персонализации в соответствующем разделе системных «Параметров».
Aero Glass не самое удобное решение из возможных, однако только оно способно практически полностью вернуть средства прозрачности в Windows 10.
Наша группа в TelegramПолезные советы и помощь
Windows Aero — одна из функций, представленных в Windows Vista и 7. Она предоставляет пользователям потрясающие графические эффекты на рабочих столах Windows. Однако Microsoft решила не включать эту функцию в выпущенные на данный момент Windows 10 и 11. Теперь вы, вероятно, ищете способ включить Aero в Windows 7, 10 или 11. Что ж, к счастью, вы нашли эту страницу! В этом посте представлены 2 способа включения темы Aero в Windows 7/10/11. Исследуйте их прямо сейчас!
Часть 1. Как настроить DWM перед установкой Aero Glass
Как пользователь Windows 7, вы можете столкнуться с проблемой, когда захотите включить тему Aero Glass, и внезапно вы получите сообщение об ошибке, сообщающее, что вам необходимо сначала установить или включить диспетчер окон рабочего стола (DWM). Что ж, если вы столкнулись с этим и ищете ответ. Что ж, ниже мы представляем его работоспособное решение! Выполните шаги сейчас:
Шаг 1Получите доступ к вашему компьютеру Панель управления выполнив поиск в своей Windows панель поиска. После этого найдите Администрирование/Административные инструменты на Панель управленияпанели поиска, щелкните ее и выберите Услуги вариант.
Шаг 2Далее, на Услуги окно, просмотрите вниз и выберите Диспетчер окон рабочего стола Диспетчер сеансов вариант. Затем щелкните правой кнопкой мыши, чтобы выбрать варианты, включая «Перезагрузить». После этого перезапустите ПК.
Часть 2. Как включить тему Aero в Windows 7/10/11
Вот как вы устанавливаете и включаете диспетчер окон рабочего стола (DWM) на своем компьютере с Windows. В следующей части вы увидите, как включить Aero Theme. Однако, как уже упоминалось выше, Microsoft решила не включать эту функцию в текущие версии Windows, то есть Windows 10 и 11. Но мы предлагаем реальные способы испытать удивительные графические элементы Aero на ваших Windows 10 и 11! Итак, без лишних слов, давайте погрузимся!
Windows 7
Поскольку тема Aero доступна в Windows 7, включить ее проще простого. Для этого щелкните правой кнопкой мыши по экрану и выберите Персонализация вариант. После этого ищите Аэро Темы и выберите тот, который, по вашему мнению, соответствует вашему вкусу.
Windows 10 и 11
В отличие от Windows 7, вы можете получить Aero Theme в Windows 10/11, загрузив сторонний инструмент, например Винаэро Твикер. Этот инструмент предлагает пакет красивых пользовательских интерфейсов, которые позволяют вам изменить интерфейс Windows 10, который Microsoft забрала у вас. Он позволяет применять к вашему компьютеру дополнительные функции, такие как Aero Theme. Как использовать Wianero Tweaker для включения темы Aero? Вот чему вы должны следовать:
Шаг 1Загрузите Винаэро Твикер на официальном сайте распакуйте скачанный файл ZIP-файл, пройдите процесс установки и согласитесь с условиями лицензии.
Шаг 2После этого отправляйтесь в левая панель, выберите Появление вариант и нажмите Аэро Лайт. На правая панель, включите Aero Lite, отметив Включить Aero Lite (по умолчанию).
Шаг 3Затем, снова на левая панель, нажмите кнопку Alt+Tab Внешний вид вариант. Эта опция позволяет настроить прозрачность Альт+Таб. Кроме того, вы также можете применить изменения к другим параметрам, доступным в разделе «Внешний вид» Alt+Tab.
В противном случае, если вы по какой-то причине не хотите загружать сторонний инструмент, вы можете включить Aero Theme, используя те, которые доступны на вашем компьютере. Однако вы ограничены несколькими вариантами выбора, в отличие от того, что есть в Windows 7. Но с их помощью вы все равно можете получить графические эффекты на своем компьютере с Windows. Итак, как получить доступ к этим темам Aero и включить их в Windows 10/11? Вот шаги, которые вам необходимо предпринять:
Шаг 1Отправляйтесь в свой Проводник файлов и получить доступ к Тема папку, следуя этому пути хранения: C:WindowsResourcesThemes. Затем выберите тему, скопируйте ее и вставьте на рабочий стол.
Шаг 2После этого щелкните файл правой кнопкой мыши и Переименовать это из аэро к аэролит. Затем щелкните его правой кнопкой мыши еще раз и откройте его с помощью Блокнот.
Шаг 3Далее замените эти строки; Windows — IDS_THEME_DISPLAYNAME_AERO DisplayName=@%SystemRoot%System32 hemeui.dll,-2013 с DisplayName=Aero Lite
Шаг 4Затем вы должны заменить эту строку Path=%ResourceDir%ThemesAeroAero.msstyles в Path=%ResourceDir%ThemesAeroAerolite.msstyles
Шаг 5После завершения замены строк отметьте галочкой Файл вкладку и выберите Сохранять вариант. После этого дважды щелкните значок Аэролит.тема файл, чтобы включить его.
Часть 3. Часто задаваемые вопросы о DWM Aero в Windows
-
Какие элементы интерфейса я могу изменить с помощью Aero Theme?
Аутентичная, энергичная, светоотражающая и открытая (Aero) тема позволяет изменять цвет фона, прозрачность, яркость и заставку рабочего стола вашего компьютера. Он позволяет использовать множество анимаций и эффектов прозрачности.
-
Как отключить тему Aero в Windows 11?
Если вы хотите изменить или отключить тему Aero, вам необходимо получить доступ к своим настройкам, выбрать опцию «Персонализация» и нажать «Темы». После этого перейдите к теме Aero, щелкните правой кнопкой мыши и выберите «Удалить».
-
Почему моя функция Aero Theme не работает?
Возможно, это связано с отключением диспетчера Windows на рабочем столе и прозрачности. Если DWM отключен, это не поможет вам включить в ОС вашего компьютера использование визуальных эффектов. С другой стороны, если прозрачность вашего компьютера отключена, Aero не запустится, поскольку не может использовать эффекты прозрачности.
Заключение
Привлекательный интерфейс рабочего стола — отличный способ обеспечить максимальное удобство работы с пользователем. А с помощью Aero Theme вы можете добиться желаемой прозрачности рабочего стола, анимации, цвета фона и т. д. Однако, если эта функция не включена на вашем компьютере с Windows, это помешает вам добиться желаемого внешнего вида рабочего стола. К счастью, в этой статье мы представляем лучшие пошаговые руководства по включению Aero Theme и наслаждению удивительными эффектами, которые они могут обеспечить в ваших интерфейсах Windows 7/10/11.
Статьи по Теме
Aero Glass
Создание специальных эффектов с помощью диспетчера окон рабочего стола
В статье рассматривается:
|
Продукты и технологии: Windows Vista, .NET Framework |
Загрузить исходный код для этой статьи:
DWM2007_04.exe
(166 KB)
Просмотреть код в интерактивном режиме
Технический обзор DWM
Преимущества компоновочного рабочего стола
Некоторые общие функции компоновки
Подготовка к интерфейсу Aero Glass
Программирование DWM
Рисование на стекле
Эскизы
Заключение
Явсегда ожидаю новых выпусков Windows. Приятно искать в MSDN® и документации SDK нововведения, чтобы повозиться с ними и написать программы на их основе, которыми можно удивить друзей и сотрудников, а если вам повезло, то и работодателя. Windows Vista™ включает множество подарков такого рода. В особенности я ожидал этого выпуска, как только услышал об интеграции трехмерного/компоновочного слоя в рабочий стол. За много лет я написал множество трехмерных приложений, но одной из самых трудных задач всегда была возможность создания приятного на вид интерфейса пользователя именно в трехмерном, а не двухмерном приложении. С выпуском Windows Vista с диспетчером окон рабочего стола (DWM) положение дел начинает меняться (см. Рис. 1).
Рис. 1 DWM позволяет выполнять такие функции, как переключение задач путем трехмерного переворачивания (Щелкните изображение, чтобы увеличить его)
DWM – это новый интерфейс, управляющий объединением различных выполняющихся и визулизируемых окон с рабочим столом Windows Vista. Windows® Presentation Foundation (WPF) обеспечивает слой верхнего уровня, управляющий визуализацией на уровень рабочего стола, а модель видеодрайверов Windows (Windows Display Driver Model, WDDM) обрабатывает фактическую низкоуровневую визуализацию на экран. В данной статье рассматривается только использование интерфейсов DWM. Для получения дополнительных сведений прочитайте статью MSDN «Представляем Windows Presentation Foundation» Дэвида Чепелла (msdn2.microsoft.com/aa663364.aspx). В данной статье модель WDDM рассматривается только в контексте новых эффектов, которые она делает доступными через интерфейсы DWM, и проблем, для разрешения которых она разрабатывалась.
Технический обзор DWM
Интерфейс DWM, имеющийся во всех версиях Windows Vista, за исключением Windows Vista Home Basic, предоставляется программой dwm.exe. Все приложения системы получают преимущества DWM без изменений и повторной компиляции. Однако приложения, использующие преимущества определенных функций DWM, могут обращаться к интерфейсам библиотеки dwmapi.dll (общий интерфейс DWM); затем запросы передаются файлу dwm.exe. Описания интерфейса находятся в файле dwmapi.h; актуальная информация об интерфейсе API имеется на веб-узле windowssdk.msdn.microsoft.com.
Система Windows Vista разрабатывалась для использования графических ускорителей для всех окон, а не только для трехмерных приложений DirectX®. Для этого DWM обращается к модели WDDM, которая является основным владельцем графического процессора и видеопамяти. (Для вывода и визуализации в DirectX DWM ображается к библиотеке milcore.dll, компоненте, являющемся общим с Windows Presentation Foundation. Визуализация в DWM обрабатывается отдельным потоком, недоступным для пользователя, которому принадлежит устройство DirectX. Кроме того, большинство приложений обладает собственными потоками, обрабатывающими визуализацию и интерфейс пользователя (например, поток сбора сообщений USER в стандартном приложении Win32®), но не конфликтующими с потоком визуализации DWM. DWM получает список окон и управляет их точечными рисунками с помощью древовидной структуры, а затем компонует их на рабочем столе. Другими словами, каждое приложение визуализирует собственные точечные рисунки, которые затем компонуются диспетчером DWM.
Поток главного окна приложения выполняет визуализацию своей сцены, к которой затем получает доступ поток визуализации DWM, и поток визуализации обновляет рабочий стол через интерфейс DirectX. Передаваемые данные сжимаются до изменений (разности) по сравнению с предыдущей визуализацией, а данные большого размера, например, изображения, помещаются в общую память. Это в принципе предоставляет возможность создания сцены на одном компьютере, в то время как окончательная визуализация может быть выполнена на другом компьютере. Программисты, занимающиеся трехмерными приложениями и использовавшие OpenGL, знакомы с этой архитектурой, позволяющей серверу управлять трехмерной сценой и просто отправлять изменения клиентскому компьютеру. Можно организовать распределенную визуализацию трехмерной сцены и запустить ее с полным аппаратным ускорением на любом количестве клиентских компьютеров. Данная архитектура позовляет диспетчеру DWM предоставлять первоклассную поддержку ситуаций удаленного рабочего стола.
В то время как Windows Vista может работать и с устаревшим драйвером, совместимым с Windows XP, для использования всех функций DWM необходим видеодрайвер WDDM. Вопреки некоторым предположениям, для DWM не требуется DirectX 10, но требуется дополнительная видеопамять и память текстур и видеоадаптер с поддержкой модели шейдеров версии 2.0 или более новой версии. Наиболее значительным изменением при использовании WDDM является введение диспетчера видеопамяти (Video Memory Manager, VidMM), который может переключать выделенную видеопамять между системной памятью и видеопамятью. Это означает, что WDDM может выполнять виртуализацию ресурсов видеоадаптера, что позволяет улучшить предоставление общего доступа к видеопамяти и ее обмен, а также переключение контекста графического процессора среди различных потоков в разрозненных приложениях. Запуск нескольких трехмерных приложений в хоть сколько-нибудь стабильном режиме был практически невозможен из-за того, что драйверы не позволяли выполнять обработку переключений контекста. До появления WDDM отсутствовало формальное планирование, поэтому часто одно приложение DirectX замедляло выполнение других. С появлением WDDM подобные ситуации возникают очень редко. Кроме того, драйверы для Windows Vista «бегают на коротком поводке» и более надежны, чем драйверы для предыдущих версий Windows.
Попутно следует заметить, что DirectX 10 является интерфейсом API только для Windows Vista. Приложения, использующие предыдущие версии DirectX, будут работать на устаревшой реализации интерфейса API DirectX под названием DirectX 9 L.Это будет последняя версия, поддерживаемая драйверами до появления WDDM. Предполаагется, что приложения DirectX 9 L запускаются в операционной системе Windows XP с установленным DirectX 9 L, а также в операционной системе Windows Vista. В DirectX 10 отсутствуют устаревшие интерфейсы.
Преимущества компоновочного рабочего стола
Все эти новые подсистемы позволяют выполнять независимую визуализацию окон и выполнять их компоновку до их визуализации на рабочем столе. Некоторые занятные примеры их использования присутствуют в Windows Vista и некоторых обновленных приложениях, поставляемых вместе с системой. Две вещи, которые я собираюсь вам показать, это использование эффекта прозрачного стекла и эскизов в Aero™. Эффект прозрачного стекла доступен только при использовании схемы Aero Glass и включении компоновки. Этот эффект недоступен для Aero Basic.
Поскольку каждое окно создается в собственном разделе видеопамяти, DWM выполняет окончательную компоновку окна в рабочий стол. Это означает, что DWM обладает доступом к изображению на рабочем столе и может выполнять смешивать его с визуализацией окна, создавая визуализацию, являющуюся композицией окна и изображения. Это наиболее заметно на областях окна, смешанных с существующим изображением рабочего стола для создания эффекта матового стекла. Поскольку визуализация всех окон выполняется на промежуточную поверхность вне экрана, это означает, что DWM является единственной программой, участвующей в обновлении эффекта прозрачного стекла. При перемещении окна с эффектом прозрачного стекла аннулирование расположенного ниже окна не требуется. DWM выполняет обновление видимого полупрозрачного изображение в соответствии с новыми координатами. Можно дать диспетчеру DWM указание добавить часть клиентской области окна для визуализации с эффектом прозрачного стекла, что делает возможным создание областей с эффектом прозрачного стекла для собственного использования.
Такая компоновка вне экрана ускоряет реакцию рабочего стола на изменения. Поскольку визуализация каждого окна теперь осуществляется отдельно от рабочего стола, проблема, часто наблюдаемая в приложениях с медленным обновлением, например, веб-обозревателях, устраняется. В предыдущих версиях Windows часто на экране возникало изображение, показанное на Рис. 2. Можно переместить окно поверх другого приложения и получить приведенный эффект разрыва, поскольку обновление нижнего окна длится слишком долго. Благодаря компоновке рабочего стола это артефакт больше не появляется.
Рис. 2 Медленная визуализация вызывает разрыв (Щелкните изображение, чтобы увеличить его)
В некоторых приложениях, поставляемых в составе Windows Vista, используется возможность визуализации стекла в клиентской области. Одним из самых лучщих примеров является проигрыватель Windows Media®, расширяющий рамку на нижнюю часть клиентской области, где выполняется рисование нескольких пользовательских элементов управления. Версия с наименьшим размером показана на рисунке 3.
Рис. 3 Эффекты стекла в проигрывателе Windows Media (Щелкните изображение, чтобы увеличить его)
При перемещении окна на рабочем столе изображение, видимое через элементы управления, состоит из части рабочего стола под проигрывателем. При перемещении окна на какую-либо анимацию она видна сквозь перемещенное окно! В этом проявляется сила компоновочного рабочего стола.
При выключении эффекта компоновки на окнах появится эффект «сияния» и окно будет визуализировано непрозрачно с цветом по умолчанию, как показано на рисунке 4.
Рис. 4 Проигрыватель Windows Media с выключенным эффектом прозрачного стекла (Щелкните изображение, чтобы увеличить его)
По существу, интерфейсы Aero Basic и Aero Glass четко разграничивают стандарты до DWM и новые стандарты интерфейсов пользователя. Интерфейс Aero Basic предоставляет этот же интерфейс API программам для поддержки обратной совместимости, но использование интерфейса Basic означает использование устаревшего диспетчера окон, DWM не работает. Устаревший интерфейс означает, что работа компоновки интерфейса пользователя будет обычной для программ, выпущенных до Windows Vista. DWM управляет интерфейсом Aero Glass и ограничивает доступ к нему. Если приложение выполняет рисование в неклиентской области (рамка с эффектом прозрачного стекла), DWM определяет это и переключается на рамку Aero Basic.
Другие новые функции Windows Vista, ставшие доступными благодаря компоновочному рабочему столу, это новые переключатели задач – пролистывание (Alt+Tab) и трехмерное пролистывание (Alt+клавиша Windows). Трехмерное пролистывание представляет особенный интерес, поскольку его функциональность зависит от части кода DWM, которая берет каждое окно верхнего уровня в графе сцены и визуализирует его в качестве члена ряда окон с эффектом перспективы, который можно прокручивать с помощью клавиатуры или мыши (см. Рис. 1).
DWM управляет взаимодействием окон с механизмом компоновки рабочего стола. Для включения программы в функциональность DWM необходимо понимание принципов работы DWM и способов взаимодействия с ним. Хотя диспетчер DWM выполняет большую работу, в его общедоступном интерфейсе API всего четыре основных функциональных области.
- Основные параметры компоновки рабочего стола
- Визуализация эффекта прозрачного стекла в клиентском окне
- Визуализация эскизов
- Настройка визуализации для взаимодействия с мультимедийными программами
В данной статье я рассмотрю первые три раздела. Последний предназначен для DirectX и приложений воспроизведения видео, поскольку DWM работает асинхронно, что может привести к артефактам дискретизации при недостаточном контроле.
Некоторые общие функции компоновки
При необходимости использования функций компоновки рабочего стола необходимо запросить и установить различные параметры DWM. Например, если какое-либо приложение переключается в полноэкранный режим, после чего DWM отключает компоновку и визуализирует цвета рабочего стола по умолчанию без прозрачности, приложение должно распознать эту ситуацию и отключить функции, относящиеся к компоновке. Ниже приведены основные функции для интеграции программы с DWM.
DwmEnableComposition включение и отключение компоновки DWM. DWM сохраняет этот параметр до завершения текущего процесса или до его сброса. Изменение параметра вызывает уведомление WM_DWMCOMPOSITIONCHANGED. Большинству приложений не требуется вызывать эту функцию, но скорее всего вам потребуется проследить результирующее сообщение Windows.
DwmEnableComposition получение состояния DWM со включенной компоновкой рабочего стола.
DwmSetWindowAttribute устанавливает для окна значение указанного атрибута DWM, контролируя обработку переходов DWM, разрешение неклиентской визуализации и обработку окна трехмерным пролистыванием. Например, если для окна выключена неклиентская визуализация, впоследствии попытка вызова расширения рамки или размытия сзади окна закончится неудачей.
DwmGetWindowAttribute извлечение текущего значения указанного DWMWINDOWATTRIBUTE для определенного окна.
DwmGetColorizationColor получение текущего цвета, использующегося для компоновки стекла DWM. Это значение основано на текущей цветовой схеме. Изменение этого параметра вызывает уведомление WM_WMCOLORIZATIONCOLORCHANGED.
DwmDefWindowProc включение проверки попадания DWM в неклиентской области при вызове уведомлением WM_NCHITTEST, а также в конкретных ситуациях, когда необходима обработка WM_NCCALCSIZE и сходных случаях вследствие расширения клиентской рамки.
Визуализация эффекта прозрачного стекла в программе вполне понятна. Для выполнения этого процесса DWM предоставляет две функции.
DwmExtendFrameIntoClientArea — простая функция, расширяющая край неклиентской рамки в пользовательское окно.
DwmEnableBlurBehindWindow — более сложная функция, предоставляющая существенно большую возможность управления визуализацией эффекта прозрачного стекла.
Поскольку визуализация всех составных окон осуществляется DWM во внеэкранное окно для последующей компоновки на рабочем столе, обработка этих изображений и обеспечение представления динамических эскизов приложения осуществляются очень просто. DWM предоставляет четыре функции, позволяющие контролировать визуализацию эскизов.
DwmQueryThumbnailSourceSize возврщает исходный размер эскиза DWM.
DwmRegisterThumbnail создает отношения эскиза между исходным окном и окном назначения.
DwmRegisterThumbnail удаляет отношение эскиза DWM, созданное функцией DwmRegisterThumbnail.
DwmUpdateThumbnailProperties обновляет свойства определенного эскиза.
DWM предоставляет пять функций для точной настройки визуализации DWM, но описание этих функций выходит за рамки этой статьи.
Подготовка к интерфейсу Aero Glass
Для программирования интерфейса DWM необходима версия операционной системы Windows Vista с возможностью отображения интерфейса Aero Glass. Хотя самым простым способом вызова этих новых функций является использование кода на C++, я предпочитаю написание кода интерфейса пользователя на C#, если это возможно. Весь код для этой статьи написан на C#, но это не означает, что необходимо точно следовать всем инструкциям. Для использования рассматриваемых в данной статье функций необходимо либо использовать C++ и ссылку в верной библиотеке, либо необходимо написание оберток P/Invoke для функций и структур на C#. В загружаемые файлы для этой статьи я включил библиотеку, содержащую обертки для функций и структур, необходимых DWM, чтобы их можно было вызвать из вашей программы на C#. В сущности, это просто набор инструкций для загрузки интерфейса из библиотеки dwmapi.dll. Для использования функций DWM для эффекта прозрачного стекла и эскизов, используемых в данной статье, необходимо создание объявлений функций и структур данных DWM на C#. Объявления, созданные для этой статьи, показаны на рис. 5.
Figure 5 Объявления C# для DWM
internal class DwmApi { [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmEnableBlurBehindWindow( IntPtr hWnd, DWM_BLURBEHIND pBlurBehind); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmExtendFrameIntoClientArea( IntPtr hWnd, MARGINS pMargins); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern bool DwmIsCompositionEnabled(); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmEnableComposition(bool bEnable); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmGetColorizationColor( out int pcrColorization, [MarshalAs(UnmanagedType.Bool)]out bool pfOpaqueBlend); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern IntPtr DwmRegisterThumbnail( IntPtr dest, IntPtr source); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmUnregisterThumbnail(IntPtr hThumbnail); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmUpdateThumbnailProperties( IntPtr hThumbnail, DWM_THUMBNAIL_PROPERTIES props); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmQueryThumbnailSourceSize( IntPtr hThumbnail, out Size size); [StructLayout(LayoutKind.Sequential)] public class DWM_THUMBNAIL_PROPERTIES { public uint dwFlags; public RECT rcDestination; public RECT rcSource; public byte opacity; [MarshalAs(UnmanagedType.Bool)] public bool fVisible; [MarshalAs(UnmanagedType.Bool)] public bool fSourceClientAreaOnly; public const uint DWM_TNP_RECTDESTINATION = 0x00000001; public const uint DWM_TNP_RECTSOURCE = 0x00000002; public const uint DWM_TNP_OPACITY = 0x00000004; public const uint DWM_TNP_VISIBLE = 0x00000008; public const uint DWM_TNP_SOURCECLIENTAREAONLY = 0x00000010; } [StructLayout(LayoutKind.Sequential)] public class MARGINS { public int cxLeftWidth, cxRightWidth, cyTopHeight, cyBottomHeight; public MARGINS(int left, int top, int right, int bottom) { cxLeftWidth = left; cyTopHeight = top; cxRightWidth = right; cyBottomHeight = bottom; } } [StructLayout(LayoutKind.Sequential)] public class DWM_BLURBEHIND { public uint dwFlags; [MarshalAs(UnmanagedType.Bool)] public bool fEnable; public IntPtr hRegionBlur; [MarshalAs(UnmanagedType.Bool)] public bool fTransitionOnMaximized; public const uint DWM_BB_ENABLE = 0x00000001; public const uint DWM_BB_BLURREGION = 0x00000002; public const uint DWM_BB_TRANSITIONONMAXIMIZED = 0x00000004; } [StructLayout(LayoutKind.Sequential)] public struct RECT { public int left, top, right, bottom; public RECT(int left, int top, int right, int bottom) { this.left = left; this.top = top; this.right = right; this.bottom = bottom; } } }
При использовании C# необходимо создать в вашем коде что-то подобное. Затем, предполагая, что используется операционная система Windows Vista, возможно выполнение вызовов DWM. Конечно же, ваше приложение не должно просто принимать, что оно выполняется под управлением Windows Vista. Чтобы быть уверенным в использовании именно этой операционной системы, необходимо проверить, что версия Environment.OSVersion.Version.Major как минимум 6.0. Или же можно перехватить исключения, возникающие в результате вызова несуществующих функций через P/Invoke.
Для использования эффектов прозрачного стекла на используемом компьютере должны соблюдаться три требования. Во-первых, на компьютере должна быть установлена версия Premium, Business или Ultimate операционной системы Windows Vista. Во-вторых, на используемом оборудовании должна быть возможна работа интерфейса Aero (для получения подробных сведений см. веб-страницу microsoft.com/windowsvista/getready/capable.mspx). И наконец, в операционной системе Windows Vista должна быть выбрана цветовая схема «Windows Aero». Ее необходимо использовать экономно, поскольку эффект может сильно влиять на загрузку графического процессора компьютера, а в случе злоупотребления им — и на пользователей.
Рис. 6 Параметры цвета и внешнего вида окон (Щелкните изображение, чтобы увеличить его)
Схему «Aero» можно включить, открыв панель управления персонализации и выбрав «Цвет и внешний вид окон». На этом экране (см. рис. 6) убедитесь, что установлен флажок «Включить прозрачность», затем щелкните ссылку «Открыть свойства классического оформления». В диалоговом окне «Параметры оформления» в области «Цветовая схема» выберите «Windows Aero» (см. рис. 7). После нажатия кнопки OK станут доступными интефейс Aero и эффект прозрачного стекла. При необходимости можно настроить цвет окон и уровень прозрачности.
Рис. 7 Эффекты Aero Glass в Windows (Щелкните изображение, чтобы увеличить его)
Программирование DWM
Проверить из программы, включена ли схема «Aero», можно с помощью вызова DwmIsCompositionEnabled. Следует иметь в виду, что текущую схему «Aero» может изменить в любое время не только пользователь, другие приложения могут программно включать и выключать ее. Поэтому однократной проверки результата этой функции может быть недостаточно.
Функция DwmEnableComposition позволяет программам включать и выключать схему «Aero». Например, при написании приложения с возможными проблемами совместимости может потребоваться отключить компоновку на время работы приложения (при написании полноэкранного и полностью исключительного приложения DirectX компоновка отключается автоматически). Данный параметр сохраняется только в течение выполнения процесса, установившего его; по завершении процесса для флага компоновки будет восстановлено исходное значение. Обычно, кроме как по причинам совместимости приложений, приложения не должны использовать эту функцию и должны позволять системе или пользователю управлять работой этой схемы.
При изменении состояния компоновки рабочего стола отправляется вещательное сообщение WM_DWMCOMPOSITIONCHANGED. Отсутствуют параметры, по которым можно определить ее включение и выключение, поэтому ответственность за вызов функции DwmIsCompositionEnabled при необходимости лежит на программисте. Код для такой проверки является простым, сложным является определение желаемого вида окна при отключении компоновки.
// Check to see if composition is Enabled if (DwmIsCompositionEnabled()) { // enable glass rendering } else { // fallback rendering }
И наконец, даже если схема «Aero» включена, пользователь может изменить цвет стекла и сделать компоновку непрозрачной. Я написал небольшое приложение для создания окна с полным эффектом прозрачного стекла, затем я изменил свойства стекла на панели управления (см. рис. 8). На первом изображении показаны параметры цвета и прозрачности окна по умолчанию. Затем я выключил прозрачность, оставив окно непрозрачным. Я изменил цвет окна на красный, а прозрачность на значение по умолчанию, изображение расположенного ниже окна все еще видно. На достаточно большом непрозрачном окне выделяется визуализация стекла, это видимый эффект «сияния» с диагональными полосами.
Рис. 8а Изменение цвета и прозрачности
Рис. 8б
Рисунок 8в
Цвет и прозрачность композиции можно проверить с помощью вызова функции DwmGetColorizationColor. При успешном вызове функции будет установлено значение цвета ARGB GDI+ и логическая переменная, указывающая, непрозрачен ли цвет. Как и при изменении схемы «Aero» на панели управления, при изменении цвета компоновки передается вещательное сообщение. В этом случае отправляется сообщение WM_DWMCOLORIZATIONCOLORCHANGED, но новые значения цвета и прозрачности можно определить с помощью параметров.
protected override void WndProc(ref Message msg) { switch (msg.Msg) { case WM_DWMCOLORIZATIONCOLORCHANGED: // The color format of currColor is 0xAARRGGBB. uint currColor = (uint)msg.WParam.ToInt32(); bool opacityblend = (msg.LParam.ToInt32() != 0); ... break; } }
Сообщение WM_DWMNCRENDERINGCHANGED отправляется при изменении визуализации DWM для неклиентской области. При включении неклиентской визуализации DWM для wParam устанавливается значение «истина». При разворачивании или сворачивании скомпонованного окна DWM при получении сообщения WM_DWMWINDOWMAXIMIZEDCHANGE появляется уведомление. При разворачивании окна для wParam будет установлено значение «истина».
Ранее упоминались две функции для использования эффекта прозрачного стекла в вашей программе. Первой является функция DwmExtendFrameIntoClientArea. Области заголовка и границы краев (т.е. практически вся неклиентская область) окна со схемой «Aero» имеют эффект прозрачного стекла. Эта функция позволяет расширять визуализацию всех сторон неклиентской области на клиентскую область, визулизируя ее с эффектом прозрачного стекла. Другими словами, можно беспрепятственность расширить верхний, правый, левый и нижний края рамки окна с эффектом прозрачного стекла на ваше окно.
Второй функцией является DwmEnableBlurBehindWindow, позволяющая выполнять визуализацию эффекта прозрачного стекла для области произвольной формы и указывать значения большего числа параметров, что позволяет лучше управлять эффектом, поэтому я предполагаю, что большинство пользователей просто расширит эффект прозрачного стекла с краев на клиентскую область. При работе с обеими функциями необходимо внимательно следить за состоянием компоновки, чтобы определить, следует ли выполнять визуализацию со включенным эффектом прозрачного стекла. Это означает, что необходимо отслеживать четыре сообщения WM_DWM* или выполнить вызов функции DwmIsCompositionEnabled, чтобы определить, следует ли проводить визуализацию са включенным или выключенным эффектом прозрачного стекла.
Прежде всего, давайте рассмотрим более простой вызов функции. Эта функция предназначена для использования с окнами без рамок (например, панель задач, боковая панель, окно ввода с помощью пера или меню Пуск); поведение для окон с рамкой не определено.
Функция DwmExtendFrameIntoClientArea получает дескриптор окна и структуру MARGINS. Дескриптор окна – это окно, рамка которого расширяется с краев на клиентскую область. Необходимо настроить структуру MARGINS, содержащую число пикселов для расширения рамки на клиентскую область. Реализация структуры MARGINS на языке C# показана на рис. 5.
Сперва немного смущает то, что отсутствуют другие функции Win32, работающие подобным образом, но, по существу, каждая сторона контролируется независимо от других. Выберите стороны для расширения и укажите глубину визуализации эффекта на клиентскую область (см. рис. 9). При необходимости расширения нескольких сторон они могут накладываться. Если нужно, чтобы эффект динамически отслеживал размер окна, функцию DwmExtendFrameIntoClientArea следует вызывать при каждом изменении размера окна. Особым случаем является установка для одного или нескольких полей значения -1, в результате чего эффект прозрачного стекла будет расширен на все окно. Для восстановления полей необходимо для всех полей установить значения 0 и снова вызвать функцию DwmExtendFrameIntoClientArea.
Рис. 9 Поля с эффектом прозрачного стекла в клиентской области (Щелкните изображение, чтобы увеличить его)
Что же необходимо сделать, если не требуется расширять эффект прозрачного стекла с рамки на клиентскую область? Функция DwmEnableBlurBehindWindow предоставляет возможность немного большего управления добавлением к окну эффекта прозрачного стекла. И снова, функция использует дескриптор окна, к которому применяется эффект прозрачного стекла, но также используется и структура DWM_BLURRBEHIND, позволяющая устанавливать различные параметры эффекта размытия окна. Наиболее важный из параметров – это область, являющаяся термином GDI, описывающим область произвольной формы, которая обычно состоит из набора линий и кривых.
Структура DWM_BLURRBEHIND, показанная на рис. 5, содержит параметры управления эффектом размытия.
При необходимости включения эффекта прозрачного стекла в клиентской области следует установить для флага fEnable значение «истина». Для выключения эффекта необходимо установить для флага значение «ложь». Параметр hRgnBlur – это дескриптор созданной области с эффектом прозрачного стекла. Как и при установке значения поля -1 для Dwm-ExtendFrameIntoClientArea, при установке в структуре размытия для параметра hRgnBlur значения NULL эффект прозрачного стекла будет применен DWM ко всему окну.
Последний параметр, fTransitionOnMaximized, немного вводит в заблуждение. Поскольку эффект прозрачного стекла для развернутых окон выключен, можно подумать, что эта ситуация каким-то образом управляется данным флагом. Этот флаг действительно определяет, переходит ли окно на цвет развернутого состояния при наличии на рабочем столе развернутого окна. К сожалению, при установке для этого параметра значения «истина» при визуализации окна появляется непрозрачная область, наподобие эффекта «сияния».
Параметр dwFlags определяет для интерфейса устанавливаемые параметры; при установке параметра необходимо включить соответствующий бит в параметре dwFlags. Это единообразно применяется в интерфейсе DWM.
Не следует забывать о необходимости визуализации цвета эффекта прозрачного стекла в области. Черная кисть, использующаяся в DwmExtendFrameIntoClientArea, хорошо подходит для создания эффекта прозрачного стекла в указанной области.
Легко заметить, что DWM предоставляет два интерфейса, более сложный, позволяющий создание области произвольной формы, и более простой, позволяющий только расширение эффекта прозрачного стекла рамок окна на клиентскую область, что делает возможным добавление дополнительных элементов управления и подобных объектов на часть панели заголовка. В обоих случаях следует беспокоиться о том, что происходит с формой области при изменении размера окна, и обновлять область для визуализации эффекта прозрачного стекла, если он не распространяется на всю клиентскую область. Исходный код, прилагаемый к данной статье, позволяет установливать расширенную клиентскую рамку и область, а также переключать флаг компоновки.
Рисование на стекле
Использование стекла в качестве фона окна является несколько затруднительным. При визуализации естественно непрозрачных объектов (например, функций GDI) выполняется визуализация элемента на стекле, которая иногда приводит к неожиданным результатам. При необходимости действительного смешения визуализаций на стеклянной поверхности следует применять функции, использующие альфа-канал цветов, например, GDI+, Windows Presentation Foundation или интерфейс API темы оформления «Windows XP».
Одним известным недостатком является использование битового шиблона 0x00000000 при визуализации объекта GDI в черном цвете, что при использовании альфа-канала приводит к появлению полностью прозрачного черного цвета. Это означает получение прозрачного, а не черного цвета при использовании черной кисти или пера GDI. Это представляет самую большую проблему при использовании цвета текста по умолчанию в элементе управления текстовой подписи на стеклянной поверхности. Поскольку обычно цветом текста по умолчанию является черный, DWM рассматривает его как прозрачный, и текст будет выведен на стекло неправильно. Пример показан на рисунке 10. Первая строка написана с помощью GDI+, а вторая – это элемент управления текстовой подписи с цветом по умолчанию. Как видите, она почти неразборчива, поскольку это неправильно выведенный текст, отображаемый серым, а не черным цветом.
Рис. 10. Прозрачное диалоговое окно
К счастью, обойти это проблему можно несколькими способами. Первым способом является использование прорисованных владельцем элементов управления. Другим способом является визуализация в точечный рисунок, имеющий альфа-канал. К счастью, самым простым способом вывода текста на элементах управления является разрешение использования GDI+ платформой .NET Framework 2.0. Это легко реализуется с помощью установки для элементов управления свойства UseCompatibleTextRendering. По умолчанию для этого свойства установлено значение «ложь» для одинаковой визуализации элементов управления, написанных для предыдущих версий .NET Framework. При установке значения «истина» текст будет отображаться правильно. Глобальное значение этого свойства можно установить с помощью метода Application.SetUseCompatibleTextRenderingDefault. При использовании Visual Studio® 2005 в код шаблона будет включен вызов для установки в основной программе значения «ложь» для совместимой визуализации текста до создания формы. Можно просто изменить установливаемое значение на «истину», как показано ниже, и все элементы управления при написании на окне с эффектом прозрачного стекла будут отображаться правильно.
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(true); Application.Run(new GlassForm()); }
Дополнительные сведения об этом, а также об использовании класса TextRenderer приведены в статье «Build World-Ready Apps Using Complex Scripts In Windows Forms Controls» (Создание многоязыковых приложений с помощью сложных сценариев элементов управления Windows Forms), автор Мигель А. Лакутюр (Miguel A. Lacouture), журнала MSDN Magazine за март 2006 г.
Эффект прозрачного стекла следует включить непосредственно перед началом визуализации окна. Механизм компоновки проверяет альфа-значения окна и применяет эффект размытия для прозрачных областей. Это может составить проблему при использовании некоторых функций GDI, поскольку они не сохраняют альфа-значений. Можно использовать GDI+, если он доступен, но следует проявлять осторожность, поскольку визуализация обращений GDI+ происходит не аппаратно, а программно, поэтому высокая частота обновления окна в сочетании с вызовами GDI+ может привести к значительному расходу системных ресурсов.
Получение эффекта прозрачного стекла в приложениях DirectX осуществляется подобным образом. Единственное, что необходимо — контроль альфа-значения объекта визуализации и использование одной из двух функций DWM включения эффекта прозрачного стекла. Во всех случаях, если диспетчеру DWM указано использовать эффект, он будет использовать альфа-значение объекта визуализации. Во всех остальных местах объект визуализации должен быть непрозрачным, в ином случае результаты будут неопределенными.
Эскизы
Эскизы – это отображаемые динамические окна открытых приложений, визуализируемые DWM. Эскизы используются переключателями задач «пролистывание» и Alt+Tab. Можно запросить эскиз окна приложения и потребовать его визуализации в вашем приложении. Интерфейс API эскизов обеспечивает динамическое представление окна приложения.
Эскизы просто использовать, поскольку вся сложная работа выполняется Windows. Сложной задачей является получение HWND приложения. После получения необходимых дескрипторов HWND эскиз просто регистрируется для связывания этого дескриптора HWND с дескриптором HWND окна, в котором должен быть визуализирован эскиз, и расположением этого окна. Последующее обновление выполняется операционной системой. При всех изменениях исходного окна изменение отображается в целевом окне.
Для использования эскиза его необходимо сначала зарегистрировать с помощью функции DwmRegisterThumbnail. Вы указываете два дескриптора окна — исходный дескриптор HWND (то есть окно, отображаемое эскизом) и целевой дескриптор HWND (окно, в котором должен быть визуализирован эскиз). По завершении использования эскиза необходимо сообщить DWM о завершении отношения с помощью вызова DwmUnregisterThumbnail. После создания эскиза функция DwmRegisterThumbnail возвращает дескриптор эскиза, а все последующие фукнции эскиза используют этот дескриптор в качестве аргумента. После регистрации эскиза для его обновления необходим вызов DwmUpdateThumbnailProperties. Пример кода формы, визуализирующей динамический эскиз другого окна, показан на рис. 11.
Figure 11 Основные эскизы
public partial class Thumbnail : Form { private IntPtr m_hThumbnail; public Thumbnail() { InitializeComponent(); } public void CreateAndShow(IntPtr sourceWindow) { m_hThumbnail = DwmApi.DwmRegisterThumbnail( Handle, sourceWindow); DwmApi.DWM_THUMBNAIL_PROPERTIES m_ThumbnailProperties = new DwmApi.DWM_THUMBNAIL_PROPERTIES(); m_ThumbnailProperties.dwFlags = DwmApi.DWM_THUMBNAIL_PROPERTIES.DWM_TNP_VISIBLE + DwmApi.DWM_THUMBNAIL_PROPERTIES.DWM_TNP_OPACITY + DwmApi.DWM_THUMBNAIL_PROPERTIES.DWM_TNP_RECTDESTINATION + DwmApi.DWM_THUMBNAIL_PROPERTIES. DWM_TNP_SOURCECLIENTAREAONLY; m_ThumbnailProperties.opacity = 255; m_ThumbnailProperties.fVisible = true; m_ThumbnailProperties.rcSource = m_ThumbnailProperties.rcDestination = new DwmApi.RECT(0, 0, ClientRectangle.Right, ClientRectangle.Bottom); m_ThumbnailProperties.fSourceClientAreaOnly = false; DwmApi.DwmUpdateThumbnailProperties( m_hThumbnail, m_ThumbnailProperties); Show(); } protected override void Dispose(bool disposing) { if (disposing && (components != null)) components.Dispose(); base.Dispose(disposing); if (m_hThumbnail != IntPtr.Zero) { if (DwmApi.DwmIsCompositionEnabled()) DwmApi.DwmUnregisterThumbnail(m_hThumbnail); m_hThumbnail = IntPtr.Zero; } } }
Кроме двух функций для регистрации и отмены регистрации эскиза, для работы с эскизами предусмотрены две другие функции. DwmQueryThumbnailSourceSize возвращает исходный размер указанного эскиза. DwmUpdateThumbnailProperties позволяет обновлять свойства определенного эскиза DWM. Она использует структуру DWM_THUMBNAIL_PROPERTIES, реализация которой на языке C# показана на рис. 5.
Структура DWM_THUMBNAIL_PROPERTIES позволяет указывать ряд свойств, например, прямоугольник назначения в целевом окне (элемент rcDestination) и прямоугольная область целевого окна для использования (элемент rcSource) в случае, если не требуется использовать все исходное окно.
Если эскиз не должен быть полностью непрозрачным, можно указать его прозрачность с помощью элемента прозрачности, где 0 – прозрачный, а 255 – непрозрачный. Если эскиз должен быть невидимым, необходимо установить для флага fVisible значение «ложь». Если для эскиза необходимо использовать только клиентскую область окна, а не все исходное окно (которое будет включать неклиентские области, такие как рамка и панель заголовка), необходимо установить для логической переменной fSourceClientAreaOnly значение «истина». Параметр dwFlags определяет для интерфейса устанавливаемый(е) параметр(ы). При установке параметра необходимо включить соответствующий бит в параметре dwFlags.
И наконец, отсутствуют ограничения размера целевого окна, интерфейс эскиза можно совершенно корректно использовать для увеличения или уменьшения исходного окна. Установлено ограничение пропорций. Пропорции исходного окна всегда сохраняются. При изменении размера исходного окна также изменится размер эскиза в соответствии с указанными границами.
В исходном коде, прилагаемом к этой статье, содержится кнопка для создания небольшого динамического эскиза главного окна приложения, как показано на рис. 12.
Визуализация эскиза является динамической, что легко увидеть. При изменении главного окна приложения произойдет обновление эскиза. Проявив немного изобретательности, можно с помощью эскизов и функций FindWindow и GetWindow Win32 создать собственный переключатель задач.
Рис. 12а Создание динамического эскиза
Рис. 12б
Заключение
Данная статья является кратким обзором интерфейса DWM. Мне кажется, для этих интерфейсов API вы найдете ряд удачных приложений. В частности, мне кажется, что как только пользователи привыкнут к использованию эффекта прозрачного стекла для окон, появится очень удобное приложение для работы с этим эффектом. Для получения дополнительных сведений я рекомендую использовать блог Грега Шехтера по адресу blogs.msdn.com/greg_schechter.
Рон Фоснер занимался созданием трехмерных приложений для Windows в течение последних 20 лет и, похоже, начинает понимать, как это делается. Он ведет веб-узел DirectX.com и любит писать быстрые приложения OpenGL и Direct3D. С ним можно связаться по адресу Ron@directx.com. Автор выражает благодарность Грегу Шехтеру и Джевану Саксу за помощь при подготовке этой статьи.