Compartir a través de


Función DwmEnableBlurBehindWindow (dwmapi.h)

Habilita el efecto de desenfoque en una ventana especificada.

Sintaxis

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

Parámetros

hWnd

Identificador de la ventana en la que se aplican los datos de desenfoque subyacente.

pBlurBehind

[in]

Puntero a una estructura de DWM_BLURBEHIND que proporciona datos desenfoque.

Valor devuelto

Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Nota

A partir de Windows 8, llamar a esta función no produce el efecto de desenfoque, debido a un cambio de estilo en la forma en que se representan las ventanas.

Habilite el desenfoque estableciendo el miembro fEnable de la estructura de DWM_BLURBEHIND en TRUE. Esto da lugar a composiciones posteriores de la ventana desenfoque el contenido detrás de él. Se debe llamar a esta función inmediatamente antes de una llamada BeginPaint para garantizar la aplicación de solicitud del efecto.

Se respetan los valores alfa de la ventana y la representación en la parte superior del desenfoque usará estos valores alfa. Es responsabilidad de la aplicación asegurarse de que los valores alfa de todos los píxeles de la ventana son correctos. Algunas operaciones de interfaz de dispositivo gráfico (GDI) de Windows no conservan valores alfa, por lo que debe tener cuidado al presentar ventanas secundarias porque los valores alfa que contribuyen son impredecibles.

La región especificada dentro de la estructura DWM_BLURBEHIND es propiedad de usted como autor de la llamada. Es responsabilidad del autor de la llamada liberar la región y puede hacerlo tan pronto como se complete la llamada de función.

Solo se puede llamar a esta función en ventanas de nivel superior. Se produce un error cuando se llama a esta función en otros tipos de ventana.

Se debe llamar a esta función siempre que se active la composición del Administrador de ventanas de escritorio (DWM). Controle el mensaje de WM_DWMCOMPOSITIONCHANGED para la notificación de cambio de composición.

Ejemplos

En el ejemplo siguiente se muestra cómo aplicar el desenfoque detrás de toda la ventana.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado dwmapi.h
Library Dwmapi.lib
Archivo DLL Dwmapi.dll

Consulte también

Introducción al desenfoque de DWM