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
程式庫 Dwmapi.lib
Dll Dwmapi.dll

另請參閱

DWM 模糊後置概觀