DwmEnableBlurBehindWindow 函数 (dwmapi.h)
在指定窗口上启用模糊效果。
语法
HRESULT DwmEnableBlurBehindWindow(
[in] HWND hWnd,
[in] const DWM_BLURBEHIND *pBlurBehind
);
参数
[in] hWnd
应用模糊隐藏数据的窗口的句柄。
[in] pBlurBehind
指向提供模糊隐藏数据的 DWM_BLURBEHIND 结构的指针。
返回值
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
注意
从 Windows 8 开始,由于窗口的呈现方式发生了样式更改,调用此函数不会导致模糊效果。
通过将 DWM_BLURBEHIND 结构的 fEnable 成员设置为 TRUE 来启用模糊。 这会导致窗口的后续组合模糊其背后的内容。 应在 BeginPaint 调用之前立即调用此函数,以确保立即应用效果。
遵循窗口中的 alpha 值,模糊顶部的呈现将使用这些 alpha 值。 应用程序负责确保窗口中所有像素的 alpha 值正确。 某些 Windows 图形设备接口 (GDI) 操作不会保留 alpha 值,因此在呈现子窗口时应小心,因为它们贡献的 alpha 值不可预知。
DWM_BLURBEHIND 结构中指定的区域由调用方拥有。 释放区域由调用方负责,一旦函数调用完成,即可执行此操作。
只能在顶级窗口中调用此函数。 在其他窗口类型上调用此函数时,会发生错误。
每当切换桌面窗口管理器 (DWM) 组合时,都必须调用此函数。 处理组合更改通知 的WM_DWMCOMPOSITIONCHANGED 消息。
示例
以下示例演示如何在整个窗口后面应用模糊。
HRESULT EnableBlurBehind(HWND hwnd)
{
HRESULT hr = S_OK;
// Create and populate the Blur Behind structure
DWM_BLURBEHIND bb = {0};
// Enable Blur Behind and apply to the entire client area
bb.dwFlags = DWM_BB_ENABLE;
bb.fEnable = true;
bb.hRgnBlur = NULL;
// Apply Blur Behind
hr = DwmEnableBlurBehindWindow(hwnd, &bb);
if (SUCCEEDED(hr))
{
// ...
}
return hr;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | dwmapi.h |
Library | Dwmapi.lib |
DLL | Dwmapi.dll |