Функция DwmEnableBlurBehindWindow (dwmapi.h)
Включает эффект размытия для указанного окна.
Синтаксис
HRESULT DwmEnableBlurBehindWindow(
[in] HWND hWnd,
[in] const DWM_BLURBEHIND *pBlurBehind
);
Параметры
[in] hWnd
Дескриптор окна, к которому применяются данные размытия.
[in] pBlurBehind
Указатель на структуру DWM_BLURBEHIND , которая предоставляет данные с размытием.
Возвращаемое значение
Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Примечание
Начиная с Windows 8, вызов этой функции не приводит к эффекту размытия из-за изменения стиля в отрисовке окон.
Включите размытие, задав для элемента fEnable структуры DWM_BLURBEHIND значение TRUE. Это приводит к тому, что последующие композиции окна размывают содержимое за ним. Эта функция должна вызываться непосредственно перед вызовом BeginPaint , чтобы обеспечить применение эффекта в командной строке.
Альфа-значения в окне учитываются, и отрисовка на вершине размытия будет использовать эти альфа-значения. Ваше приложение отвечает за правильность альфа-значений всех пикселей в окне. Некоторые операции интерфейса графических устройств Windows (GDI) не сохраняют альфа-значения, поэтому следует соблюдать осторожность при представлении дочерних окон, так как значения альфа-канала, которые они вносят, непредсказуемы.
Регион, указанный в структуре DWM_BLURBEHIND , принадлежит вам как вызывающей. Ответственность за освобождение региона лежит на вызывающем объекте, и вы можете сделать это сразу после завершения вызова функции.
Эта функция может вызываться только в окнах верхнего уровня. Ошибка возникает при вызове этой функции для других типов окон.
Эта функция должна вызываться всякий раз, когда в диспетчере окон рабочего стола (DWM) переключается композиция. Обработка сообщения WM_DWMCOMPOSITIONCHANGED для уведомления об изменении композиции.
Примеры
В следующем примере показано, как применить размытие за всем окном.
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;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | dwmapi.h |
Библиотека | Dwmapi.lib |
DLL | Dwmapi.dll |