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


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

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

Синтаксис

HRESULT DwmSetIconicThumbnail(
  [in] HWND    hwnd,
  [in] HBITMAP hbmp,
  [in] DWORD   dwSITFlags
);

Параметры

[in] hwnd

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

[in] hbmp

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

[in] dwSITFlags

Параметры отображения эскиза. Принимает одно из следующих значений:

0 (0x00000000)

Вокруг предоставленного эскиза рамка не отображается.

DWM_SIT_DISPLAYFRAME (0x00000001)

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

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

Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Приложение обычно вызывает функцию DwmSetIconicThumbnail после получения сообщения WM_DWMSENDICONICTHUMBNAIL для своего окна. Эскиз не должен превышать максимальные координаты X и Y, указанные в этом сообщении. Эскиз также должен иметь 32-разрядную глубину цвета.

Приложение вызывает DwmInvalidateIconicBitmaps , чтобы указать диспетчеру окон рабочего стола (DWM), что знаковые эскизы и динамические точечные изображения предварительного просмотра устарели и должны быть обновлены. Затем DWM запрашивает новые версии из окна, когда они понадобятся. Однако если кэш точечных изображений DWM заполнен, DWM не будет запрашивать обновленные версии.

DwM использует копию растрового изображения, но приложение может освободить эту копию в любое время из-за ограничений памяти. Если копия выпущена, окно не получает уведомление, но оно может получить последующий запрос WM_DWMSENDICONICTHUMBNAIL , когда эскиз потребуется снова. Вызывающий объект сохраняет право собственности на исходное растровое изображение и отвечает за освобождение ресурсов, которые он использует, когда оно больше не требуется.

Примеры

Перед вызовом DwmSetIconicThumbnail приложение должно сначала вызвать функцию 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));

Затем приложение вызывает функцию DwmSetIconicThumbnail в ответ на сообщение WM_DWMSENDICONICTHUMBNAIL , как показано в следующем примере.

        case WM_DWMSENDICONICTHUMBNAIL:
        {    
            // This window is being asked to provide its iconic bitmap. This indicates
            // a thumbnail is being drawn.
            hbm = CreateDIB(HIWORD(lParam), LOWORD(lParam)); 
            if (hbm)
            {
                hr = DwmSetIconicThumbnail(hwnd, hbm, 0);
                DeleteObject(hbm);
            }
        }
        break;

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

Требования

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