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 |