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


Функция DwmSetIconicLivePreviewBitmap (dwmapi.h)

Задает статическое знаковое растровое изображение для отображения динамического предварительного просмотра (также известного как Обзор предварительного просмотра) окна или вкладки. Панель задач может использовать это растровое изображение для отображения полноразмерного предварительного просмотра окна или вкладки.

Синтаксис

HRESULT DwmSetIconicLivePreviewBitmap(
  [in]           HWND    hwnd,
  [in]           HBITMAP hbmp,
  [in, optional] POINT   *pptClient,
  [in]           DWORD   dwSITFlags
);

Параметры

[in] hwnd

Дескриптор окна. Это окно должно принадлежать вызывающей процедуре.

[in] hbmp

Дескриптор растрового изображения для представления окна, указанного hwnd .

[in, optional] pptClient

Смещение клиентской области окна вкладки (области содержимого в рамке клиентского окна) от фрейма ведущего окна. Это смещение позволяет правильно отрисовывать содержимое окна вкладки в режиме динамического предварительного просмотра, когда оно рисуется без рамки.

[in] dwSITFlags

Параметры отображения для динамического предварительного просмотра. Этот параметр может иметь значение 0 или следующее.

DWM_SIT_DISPLAYFRAME (0x00000001)

0x00000001. Отображает кадр вокруг предоставленного растрового изображения.

Возвращаемое значение

Возвращает S_OK , если функция выполнена успешно, или значение ошибки в противном случае. Обратите внимание, что поскольку это растровое изображение не кэшируется, если окно не просматривается, когда приложение вызывает эту функцию, функция возвращает код успешного выполнения, но растровое изображение удаляется и не используется.

Комментарии

Динамический просмотр (также известный как Обзор предварительный просмотр) окна появляется, когда пользователь перемещает указатель мыши на эскиз окна на панели задач или передает фокус эскиза в окне ALT+TAB. Это полноразмерное представление окна и может быть snapshot или знаковым представлением.

Окно обычно вызывает функцию DwmSetIconicLivePreviewBitmap в ответ на сообщение WM_DWMSENDICONICLIVEPREVIEWBITMAP . Возвращаемое растровое изображение не должно быть больше клиентской области окна или фрейма и иметь 32-битовую глубину цвета.

Диспетчер окон рабочего стола (DWM) использует копию растрового изображения, но вызывающий объект сохраняет за собой право собственности на исходное растровое изображение и отвечает за освобождение ресурсов, которые он использует, когда он больше не нужен. DWM не сохраняет свою копию растрового изображения, когда DWM перестает отображать представление динамического предварительного просмотра.

Примеры

Чтобы задать статический, знаковый растровый рисунок для использования в качестве динамического предварительного просмотра для окна приложения, приложение вызывает функцию DwmSetIconicLivePreviewBitmap . Чтобы задать это растровое изображение, приложение должно вызвать DwmSetWindowAttribute , чтобы задать атрибуты окна для отрисовки, не являющегося клиентом , DWMWA_FORCE_ICONIC_REPRESENTATION и DWMWA_HAS_ICONIC_BITMAP, как показано в следующем коде.

            // Set DWM window attributes to provide the iconic bitmap, and 
            // to always render the thumbnail using the iconic bitmap.
            BOOL fForceIconic = TRUE;
            BOOL fHasIconicBitmap = TRUE;

            DwmSetWindowAttribute(
                hwnd,
                DWMWA_FORCE_ICONIC_REPRESENTATION,
                &fForceIconic,
                sizeof(fForceIconic));

            DwmSetWindowAttribute(
                hwnd,
                DWMWA_HAS_ICONIC_BITMAP,
                &fHasIconicBitmap,
                sizeof(fHasIconicBitmap));

Затем приложение вызывает DwmSetIconicLivePreviewBitmap , чтобы ответить на сообщение WM_DWMSENDICONICLIVEPREVIEWBITMAP , как показано в следующем коде.

        case WM_DWMSENDICONICLIVEPREVIEWBITMAP:
        {
            // This window is being asked to provide a bitmap to show in Peek preview.
            // This indicates the thumbnail in the taskbar is being previewed.
            RECT rectWindow = {0, 0, 0, 0};
            if (GetClientRect(hwnd, &rectWindow))
            {
                nWidth = rectWindow.right - rectWindow.left;
                nHeight = rectWindow.bottom - rectWindow.top;
            }

            hbm = CreateDIB(nWidth, nHeight);
            if (hbm)
            {
                hr = DwmSetIconicLivePreviewBitmap(hwnd, hbm, NULL, DWM_SIT_DISPLAYFRAME);
                DeleteObject(hbm);
            }
        }
        break;

Полный пример см. в разделе Настройка эскиза и динамического предварительного растрового изображения .

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header dwmapi.h
Библиотека Dwmapi.lib
DLL Dwmapi.dll; Uxtheme.dll