Windows Aero - 以编程方式禁用视觉效果

时间:2012-03-22 14:00:57

标签: winapi accessibility aero

有没有人知道如果有一个API以编程方式禁用/启用特定的Windows视觉效果,例如“启用透明玻璃”或“启用Aero Peek”?

我所指的效果是以下配置:系统/高级系统偏好设置/高级(标签)/性能设置/自定义

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

感谢

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

当BitBlting透明png和其他图像时,Aero主题会出现问题。在Aero主题中,当我使用AlphaBlend代替BitBlt时,透明度会变得很复杂,而CPngImage代替CBitmap,并且在BLENDFUNCTION :: SourceConstantAlpha中设置BLENDFUNCTION结构,其中的透明度为0-255。当我想要透明背景或仅仅淡化为半透明(不透明度0-255)时,我使用这种方法 当Aero主题在所有透明度上一扫而光时。所以我用DwmEnableComposition(DWM_EC_DISABLECOMPOSITION)禁用了aero主题透明度;

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

只需将其调用到OnInitDialog()或一些早期的窗口实例函数中。这就是诀窍