Partager via


DwmEnableBlurBehindWindow, fonction (dwmapi.h)

Active l’effet de flou sur une fenêtre spécifiée.

Syntaxe

HRESULT DwmEnableBlurBehindWindow(
  [in] HWND                 hWnd,
  [in] const DWM_BLURBEHIND *pBlurBehind
);

Paramètres

[in] hWnd

Handle de la fenêtre sur laquelle les données de flou sont appliquées.

[in] pBlurBehind

Pointeur vers une structure DWM_BLURBEHIND qui fournit des données floues.

Valeur retournée

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Notes

À compter de Windows 8, l’appel de cette fonction n’entraîne pas l’effet de flou, en raison d’un changement de style dans le rendu des fenêtres.

Activez le flou en définissant le membre fEnable de la structure DWM_BLURBEHIND sur TRUE. Il en résulte que les compositions suivantes de la fenêtre floutent le contenu derrière celle-ci. Cette fonction doit être appelée immédiatement avant un appel BeginPaint pour garantir l’application rapide de l’effet.

Les valeurs alpha dans la fenêtre sont respectées, et le rendu au-dessus du flou utilise ces valeurs alpha. Il incombe à votre application de s’assurer que les valeurs alpha de tous les pixels de la fenêtre sont correctes. Certaines opérations GDI (Graphics Device Interface) Windows ne conservent pas les valeurs alpha. Vous devez donc faire attention lors de la présentation des fenêtres enfants, car les valeurs alpha qu’elles contribuent sont imprévisibles.

La région spécifiée dans la structure DWM_BLURBEHIND vous appartient en tant qu’appelant. Il incombe à l’appelant de libérer la région, et vous pouvez le faire dès que l’appel de fonction est terminé.

Cette fonction peut être appelée uniquement sur les fenêtres de niveau supérieur. Une erreur se produit lorsque cette fonction est appelée sur d’autres types de fenêtre.

Cette fonction doit être appelée chaque fois que la composition de Desktop Window Manager (DWM) est activée. Gérez le message WM_DWMCOMPOSITIONCHANGED pour la notification de modification de composition.

Exemples

L’exemple suivant montre comment appliquer le flou derrière la fenêtre entière.

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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête dwmapi.h
Bibliothèque Dwmapi.lib
DLL Dwmapi.dll

Voir aussi

Vue d’ensemble du flou DWM