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

另请参阅

DWM 模糊隐藏概述