2012-03-22 7 views
4

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

Эффекты Я имею в виду те, конфигурируются в: System// Advanced (вкладка) Advanced System Preferences/Настройки Производительность/Пользовательские

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

благодаря

ответ

4

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

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

+0

AFIAK, DwmEnableComposition() полностью отключает Aero, не так ли? Мне нужна композиция рабочего стола, или увеличение api не будет работать .... – mpm

2

Темы 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() или в предыдущей функции экземпляра окна. Вот и трюк

 Смежные вопросы

  • Нет связанных вопросов^_^