dwmSetIconicThumbnail 函数 (dwmapi.h)
设置窗口或选项卡上要用作缩略图表示形式的静态图标位图。 任务栏可以将此位图用作窗口或选项卡的缩略图切换目标。
语法
HRESULT DwmSetIconicThumbnail(
[in] HWND hwnd,
[in] HBITMAP hbmp,
[in] DWORD dwSITFlags
);
参数
[in] hwnd
窗口或选项卡的句柄。此窗口必须属于调用进程。
[in] hbmp
位图的句柄,用于表示 hwnd 指定的窗口。
[in] dwSITFlags
缩略图的显示选项。 以下值之一:
0 (0x00000000)
提供的缩略图周围不显示任何框架。
DWM_SIT_DISPLAYFRAME (0x00000001)
在提供的缩略图周围显示一个框架。
返回值
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
备注
应用程序通常在收到其窗口的WM_DWMSENDICONICTHUMBNAIL消息后调用 DwmSetIconicThumbnail 函数。 缩略图不应超过该消息中指定的最大 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 |
标头 | dwmapi.h |
Library | Dwmapi.lib |
DLL | Dwmapi.dll;Uxtheme.dll |