DWM API应用之缩略图

DwmRegisterThumbnail function

在目标窗口和源窗口之间创建桌面窗口管理器(DWM)缩略图关系。

DWMAPI DwmRegisterThumbnail(
  HWND        hwndDestination,
  HWND        hwndSource,
  PHTHUMBNAIL phThumbnailId
);

参数

hwndDestination

将使用DWM缩略图的窗口的句柄。目标窗口句柄为非顶级窗口类型,将导致返回值E_INVALIDARG。

hwndSource

要用作缩略图源的窗口的句柄。源窗口句柄为非顶级窗口类型,将导致返回值E_INVALIDARG。

phThumbnailId

指向句柄的指针,当此函数成功返回时,该句柄表示DWM缩略图的注册。

返回值

如果此函数成功,则返回S_OK. 否则,它返回一个HRESULT错误代码。

DwmUnregisterThumbnail function

删除由创建的桌面窗口管理器(DWM)缩略图关系DwmRegisterThumbnail功能

DWMAPI DwmUnregisterThumbnail(
  HTHUMBNAIL hThumbnailId
);

参数

hThumbnailId

要删除的缩略图关系的句柄。NNULL或不存在的句柄将导致返回值E_INVALIDARG。

返回值

如果此函数成功,则返回S_OK. 否则,它返回一个HRESULT错误代码。

用法:

HRESULT RegisterThumbWindow(HWND hWndSrc, HWND hWndDst)
{
	HRESULT hr = S_OK;
	HTHUMBNAIL thumbnail = NULL;

	hr = DwmRegisterThumbnail(hWndDst, hWndSrc, &thumbnail);
	if (SUCCEEDED(hr))
	{
		RECT dest;
                ::GetClientRect(hWndDst, &dest);

		DWM_THUMBNAIL_PROPERTIES dskThumbProps;
		dskThumbProps.dwFlags = DWM_TNP_RECTDESTINATION | DWM_TNP_VISIBLE | DWM_TNP_SOURCECLIENTAREAONLY;
		dskThumbProps.fSourceClientAreaOnly = FALSE;
		dskThumbProps.fVisible = TRUE;
		dskThumbProps.opacity = (255 * 70)/100;
		dskThumbProps.rcDestination = dest;

		hr = DwmUpdateThumbnailProperties(thumbnail,&dskThumbProps);
		if (SUCCEEDED(hr))
		{
			// ...
		}
	}

	return hr;	
}

效果图:

DWM API应用之缩略图_第1张图片

你可能感兴趣的:(工作随笔篇,VC++(初级篇),VC++(日积月累篇))