다음을 통해 공유


DWM 축소판 그림 개요

DWM(데스크톱 창 관리자)을 사용하면 애플리케이션 창의 썸네일 표현을 표시할 수 있습니다. 이러한 스냅샷은 창의 정적 스냅샷이 아니라 썸네일 원본 창과 라이브 썸네일 렌더링을 수신하는 대상 창의 위치 간에 동적이고 일정한 연결입니다. 이를 통해 작업 표시줄에서 애플리케이션을 마우스로 가리키거나 ALT-TAB 키 제스처를 사용하여 애플리케이션을 빠르게 보고 애플리케이션으로 전환하여 애플리케이션을 빠르게 볼 수 있습니다.

다음 이미지는 작업 표시줄에서 애플리케이션을 마우스로 가리킬 때 표시되는 Windows Vista 라이브 썸네일을 보여 줍니다.

작업 표시줄에서 앱을 마우스로 가리킬 때 표시되는 D W M 썸네일을 보여 주는 스크린샷

다음 이미지는 DWM에서 사용하도록 설정된 Windows Vista Flip(ALT-TAB)을 보여 줍니다.

dwm 사용 alt-tab의 스크린샷

참고

DWM 미리 보기는 개발자가 WINKEY-TAB(Windows Vista Flip3D) 기능과 같은 애플리케이션을 만들 수 없습니다. 미리 보기는 2D로 대상 창에 직접 렌더링됩니다.

 

DWM 축소판 그림 관계

애플리케이션에 썸네일을 표시하려면 먼저 원본 창과 대상 창 간에 관계를 설정해야 합니다. 이 작업은 DwmRegisterThumbnail 함수를 호출하여 수행됩니다.

DwmRegisterThumbnail 은 대상 창에서 썸네일을 렌더링하지 않고 관계를 만들고 축소판 그림 핸들을 제공합니다. 썸네일은 DWM_THUMBNAIL_PROPERTIES 설정되고 DwmUpdateThumbnailProperties 함수가 호출된 후에 렌더링됩니다. DwmUpdateThumbnailProperties에 대한 후속 호출은 썸네일을 새 속성 집합으로 업데이트합니다. 또한 DWM은 도우미 함수 DwmQueryThumbnailSourceSize 를 제공하여 미리 보기에서 원본 창의 크기를 가져옵니다.

미리 보기 관계를 종료하려면 DwmUnregisterThumbnail 함수를 호출합니다.

다음 예제에서는 Windows 데스크톱을 사용하여 releationship을 만들고 애플리케이션에 표시하는 방법을 보여 줍니다.

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;

바탕 화면 창 관리자 개요

DWM 컴퍼지션 설정 및 제어

성능 고려 사항 및 모범 사례