Función DwmEnableBlurBehindWindow (dwmapi.h)
Habilita el efecto de desenfoque en una ventana especificada.
Sintaxis
HRESULT DwmEnableBlurBehindWindow(
[in] HWND hWnd,
[in] const DWM_BLURBEHIND *pBlurBehind
);
Parámetros
[in] hWnd
Identificador de la ventana en la que se aplican los datos de desenfoque subyacente.
[in] pBlurBehind
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 |