Поделиться через


Функция 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

См. также раздел

Общие сведения о размытии DWM за пределами