Condividi tramite


Funzione DwmEnableBlurBehindWindow (dwmapi.h)

Abilita l'effetto blur in una finestra specificata.

Sintassi

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

Parametri

[in] hWnd

Handle alla finestra in cui vengono applicati i dati di blur-behind.

[in] pBlurBehind

Puntatore a una struttura di DWM_BLURBEHIND che fornisce dati sfocati.

Valore restituito

Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Nota

A partire da Windows 8, la chiamata di questa funzione non comporta l'effetto blur, a causa di una modifica dello stile nel modo in cui vengono sottoposti a rendering le finestre.

Abilitare il blur impostando il membro fEnable della struttura DWM_BLURBEHIND su TRUE. Ciò comporta composizioni successive della finestra sfocatura del contenuto dietro di esso. Questa funzione deve essere chiamata immediatamente prima di una chiamata BeginPaint per garantire l'applicazione del prompt dell'effetto.

I valori alfa della finestra sono onorati e il rendering del blur userà questi valori alfa. È responsabilità dell'applicazione assicurarsi che i valori alfa di tutti i pixel della finestra siano corretti. Alcune operazioni di Windows Graphics Device Interface (GDI) non mantengono i valori alfa, quindi è consigliabile prestare attenzione quando si presentano finestre figlio perché i valori alfa che contribuiscono sono imprevedibili.

L'area specificata all'interno della struttura DWM_BLURBEHIND è di proprietà dell'utente come chiamante. È responsabilità del chiamante liberare l'area ed è possibile farlo non appena viene completata la chiamata alla funzione.

Questa funzione può essere chiamata solo nelle finestre di primo livello. Si verifica un errore quando questa funzione viene chiamata su altri tipi di finestra.

Questa funzione deve essere chiamata ogni volta che la composizione di Desktop Window Manager (DWM) viene disattivata. Gestire il messaggio WM_DWMCOMPOSITIONCHANGED per la notifica di modifica della composizione.

Esempio

Nell'esempio seguente viene illustrato come applicare il blur dietro l'intera finestra.

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione dwmapi.h
Libreria Dwmapi.lib
DLL Dwmapi.dll

Vedi anche

Panoramica di DWM Blur