2

我正在尝试为我的应用程序启用 Aero(一个使用浏览器运行“单进程”的 Firefox 插件),但我没有这样做。操作系统是 Windows 7 64 位。

这是代码:

BOOL bEnabled = FALSE;
if(SUCCEEDED(DwmIsCompositionEnabled(&bEnabled)) && !bEnabled){         
    HRESULT hres = DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
}

DwmEnableComposition 应该启用合成,但它没有,该函数也返回:

S_OK

任何帮助将不胜感激,谢谢!

4

2 回答 2

3

您不能启用 DWM 合成;您只能请求禁用它。当你完成需要它关闭时,你打电话

DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);

来自 MSDN:

当所有禁用合成的进程都调用 DwmEnableComposition 启用它或已终止时,将自动启用 DWM 合成。

你不能启用它,你只是宣布你不再需要它被禁用。(微软不允许你启用合成的原因是你不能相信你不会尝试去做。

当你落后时,你也应该放弃。再次来自 MSDN:

注意 此功能自 Windows 8 Consumer Preview 起已弃用。不能再以编程方式禁用 DWM。

于 2012-05-04T02:48:37.767 回答
1

DwmEnableComposition()在系统范围内禁用它时无效。它的唯一目的是通知 Windows 您正在启动或完成与 DWM 不兼容的操作。

此外,他们的操作系统是什么样子取决于用户,而不是由程序来配置它。

于 2012-04-12T08:55:48.927 回答