Compartilhar via


Função DwmEnableBlurBehindWindow (dwmapi.h)

Habilita o efeito de desfoque em uma janela especificada.

Sintaxe

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

Parâmetros

[in] hWnd

O identificador para a janela na qual os dados de desfoque são aplicados.

[in] pBlurBehind

Um ponteiro para uma estrutura DWM_BLURBEHIND que fornece dados de desfoque.

Retornar valor

Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

Observação

A partir do Windows 8, chamar essa função não resulta no efeito de desfoque, devido a uma alteração de estilo na maneira como as janelas são renderizadas.

Habilite o desfoque definindo o membro fEnable da estrutura DWM_BLURBEHIND como TRUE. Isso resulta em composições subsequentes da janela desfocando o conteúdo por trás dela. Essa função deve ser chamada imediatamente antes de uma chamada BeginPaint para garantir a aplicação de prompt do efeito.

Os valores alfa na janela são respeitados e a renderização no topo do desfoque usará esses valores alfa. É responsabilidade do aplicativo garantir que os valores alfa de todos os pixels na janela estejam corretos. Algumas operações da GDI (Interface de Dispositivo de Gráficos do Windows) não preservam valores alfa, portanto, você deve ter cuidado ao apresentar janelas filho porque os valores alfa que eles contribuem são imprevisíveis.

A região especificada dentro da estrutura DWM_BLURBEHIND pertence a você como o chamador. É responsabilidade do chamador liberar a região e você pode fazer isso assim que a chamada de função for concluída.

Essa função só pode ser chamada em janelas de nível superior. Ocorre um erro quando essa função é chamada em outros tipos de janela.

Essa função deve ser chamada sempre que a composição do DWM (Gerenciador de Janelas da Área de Trabalho) for alternada. Manipule a mensagem de WM_DWMCOMPOSITIONCHANGED para notificação de alteração de composição.

Exemplos

O exemplo a seguir demonstra como aplicar o desfoque atrás de toda a janela.

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 Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho dwmapi.h
Biblioteca Dwmapi.lib
DLL Dwmapi.dll

Confira também

Visão geral do desfoque do DWM por trás