DWM サムネイルの概要
デスクトップ ウィンドウ マネージャー (DWM) を使用すると、アプリケーション ウィンドウのサムネイル表現を表示できます。 これらはウィンドウの静的スナップショットではなく、サムネイル ソース ウィンドウと、ライブ サムネイル レンダリングを受け取るターゲット ウィンドウ上の場所との間の動的な一定の接続です。 これにより、タスク バー上のアプリケーションの上にマウス ポインターを合わせたり、Alt キーを押しながら Tab キージェスチャを使用してアプリケーションを表示したり、すばやく切り替えたりして、実行中のアプリケーションをすばやく表示できます。
次の図は、タスク バー上のアプリケーションをポイントしたときに表示される Windows Vista ライブ サムネイルを示しています。
次の図は、DWM で有効になっている Windows Vista Flip (Alt+ TAB) を示しています。
Note
DWM サムネイルを使用すると、開発者は Windows Vista Flip3D (WINKEY-TAB) 機能のようなアプリケーションを作成できません。 サムネイルは、2-D の移動先ウィンドウに直接レンダリングされます。
DWM サムネイルのリレーションシップ
アプリケーションでサムネイルを表示するには、最初にソース ウィンドウとコピー先ウィンドウの間にリレーションシップを確立する必要があります。 これを行うには、 DwmRegisterThumbnail 関数を呼び出します。
DwmRegisterThumbnail は、移動先ウィンドウにサムネイルをレンダリングするのではなく、リレーションシップを作成し、サムネイル ハンドルを提供するだけです。 サムネイルは、 DWM_THUMBNAIL_PROPERTIES が設定され、 DwmUpdateThumbnailProperties 関数が呼び出された後にレンダリングされます。 DwmUpdateThumbnailProperties の後続の呼び出しにより、サムネイルが新しいプロパティ セットで更新されます。 DWM には、サムネイルからソース ウィンドウのサイズを取得するためのヘルパー関数 DwmQueryThumbnailSourceSize も用意されています。
サムネイルリレーションシップを終了するには、 DwmUnregisterThumbnail 関数を呼び出します。
次の例では、Windows デスクトップを使用してleleationshipを作成し、アプリケーションに表示する方法を示します。
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;
関連トピック