Windows Aero - программно отключение визуальных эффектов - PullRequest
4 голосов
/ 22 марта 2012

Кто-нибудь знает, как, если есть API, чтобы программно отключить / включить определенные визуальные эффекты Windows, такие как «Включить прозрачное стекло» или «Включить Aero Peek»?

Я имею в виду те эффекты, которые настроеныв: Система / Расширенные настройки системы / Дополнительно (вкладка) / Параметры производительности / Пользовательские

Я создаю инструмент специальных возможностей для Windows, и мне нужно отключить некоторые визуальные эффекты, поскольку они «невидимы» для пользователей с нарушениями зрения,Кроме того, мне нужно сохранить несколько циклов ЦП для увеличения экрана и настройки цвета.

спасибо

Ответы [ 2 ]

4 голосов
/ 22 марта 2012

Нет, его можно отключить во время работы определенного приложения, используя DwmEnableComposition().

Глобальное изменение этого параметра является внутренним для окон и должно действительно выполняться пользователем.

2 голосов
/ 18 июля 2014

Aero темы создает проблемы, когда BitBlting прозрачный PNG и другие изображения.В теме Aero прозрачность становится винт, когда я использую AlphaBlend вместо BitBlt и CPngImage вместо CBitmap, и устанавливаю структуру BLENDFUNCTION с некоторой прозрачностью от 0 до 255 в BLENDFUNCTION :: SourceConstantAlpha.Я использую этот подход, когда я хочу иметь прозрачный фон или просто исчезать как полупрозрачный (непрозрачность 0-255) И когда тема Aero на всю прозрачность сметена.Поэтому я отключаю прозрачность аэро-темы с помощью DwmEnableComposition (DWM_EC_DISABLECOMPOSITION);

HRESULT hr = S_OK;
hr = DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
if (SUCCEEDED(hr)){
    //  Aero theme effect is off! No more swept away transparency
}

, просто вызывая ее в OnInitDialog () или какой-либо более ранней функции экземпляра окна.Вот и дела

...