【问题标题】:Windows Aero - Programmatically Disabling Visual EffectsWindows Aero - 以编程方式禁用视觉效果
【发布时间】:2012-03-22 14:00:56
【问题描述】:

有谁知道是否有 API 可以通过编程方式禁用/启用特定的 Windows 视觉效果,例如“启用透明玻璃”或“启用 Aero Peek”?

我指的效果是在:系统/高级系统偏好设置/高级(选项卡)/性能设置/自定义中配置的效果

我正在为 Windows 创建一个辅助工具,我需要禁用一些视觉效果,因为它们对于视障用户是“不可见的”。另外,我需要为屏幕放大和颜色调整节省一些 CPU 周期。

谢谢

【问题讨论】:

    标签: winapi accessibility aero


    【解决方案1】:

    不,可以在特定应用程序运行时使用 DwmEnableComposition() 禁用它。

    全局更改它是 Windows 内部的,应该由用户真正完成。

    【讨论】:

    • AFIAK,DwmEnableComposition() 完全禁用 Aero,对吗?我需要桌面合成,否则放大 api 不起作用....
    【解决方案2】:

    当 BitBlting 透明 png 和其他图像时,Aero 主题会造成麻烦。在 Aero 主题中,当我使用 AlphaBlend 而不是 BitBlt 和 CPngImage 代替 CBitmap 时,透明度会变得很糟糕,并在 BLENDFUNCTION::SourceConstantAlpha 中设置具有 0-255 透明度的 BLENDFUNCTION 结构。当我想要透明背景或只是淡出半透明(不透明度 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() 或一些较早的窗口实例函数中。这就是诀窍

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2015-02-17
      • 1970-01-01
      • 2010-11-11
      • 2014-05-12
      • 1970-01-01
      相关资源
      最近更新 更多