DWM(데스크톱 창 관리자)을 사용하면 애플리케이션 창의 썸네일 표현을 표시할 수 있습니다. 이러한 스냅샷은 창의 정적 스냅샷이 아니라 썸네일 원본 창과 라이브 썸네일 렌더링을 수신하는 대상 창의 위치 간의 동적 상수 연결입니다. 이렇게 하면 작업 표시줄에서 애플리케이션을 마우스로 가리키거나 ALT-TAB 키 제스처를 사용하여 애플리케이션을 빠르게 확인하고 전환할 수 있습니다.
다음 이미지는 작업 표시줄에서 애플리케이션을 마우스로 가리킬 때 표시되는 Windows Vista 라이브 썸네일을 보여 줍니다.
다음 이미지는 DWM에서 사용하도록 설정된 Windows Vista Flip(ALT-TAB)을 보여 줍니다.
dwm이 설정된 alt-tab의 스크린샷
메모
DWM 썸네일을 사용하면 개발자가 Windows Vista Flip3D(WINKEY-TAB) 기능과 같은 애플리케이션을 만들 수 없습니다. 썸네일은 2차원으로 대상 창에 직접 렌더링됩니다.
DWM 미리보기 관계
애플리케이션에 미리 보기를 표시하려면 먼저 원본 창과 대상 창 간에 관계를 설정해야 합니다. 이 작업은 DwmRegisterThumbnail 함수를 호출하여 수행됩니다.
DwmRegisterThumbnail 대상 창에서 썸네일을 렌더링하지 않고 관계를 만들고 썸네일 핸들을 제공합니다. 썸네일은 DWM_THUMBNAIL_PROPERTIES 설정되고 DwmUpdateThumbnailProperties 함수가 호출된 후에 렌더링됩니다. DwmUpdateThumbnailProperties에 대한 후속 호출은 썸네일을 새 속성 집합으로 업데이트할 있습니다. 또한 DWM은 DwmQueryThumbnailSourceSize도우미 함수를 제공하여 축소판 그림에서 원본 창의 크기를 가져옵니다.
썸네일 관계를 종료하려면 DwmUnregisterThumbnail 함수를 호출합니다.
다음 예제에서는 Windows 데스크톱과 관계를 생성하고 이를 애플리케이션에 표시하는 방법을 보여 줍니다.
HRESULT hr = S_OK;
HTHUMBNAIL thumbnail = NULL;
// Register the thumbnail
hr = DwmRegisterThumbnail(hwnd, FindWindow(_T("Progman"), NULL), &thumbnail);
if (SUCCEEDED(hr))
{
// Specify the destination rectangle size
RECT dest = {0,50,100,150};
// Set the thumbnail properties for use
DWM_THUMBNAIL_PROPERTIES dskThumbProps;
dskThumbProps.dwFlags = DWM_TNP_SOURCECLIENTAREAONLY | DWM_TNP_VISIBLE | DWM_TNP_OPACITY | DWM_TNP_RECTDESTINATION;
dskThumbProps.fSourceClientAreaOnly = FALSE;
dskThumbProps.fVisible = TRUE;
dskThumbProps.opacity = (255 * 70)/100;
dskThumbProps.rcDestination = dest;
// Display the thumbnail
hr = DwmUpdateThumbnailProperties(thumbnail,&dskThumbProps);
if (SUCCEEDED(hr))
{
// ...
}
}
return hr;
관련 항목