DwmSetIconicLivePreviewBitmap 関数 (dwmapi.h)

ウィンドウまたはタブの ライブ プレビュー ( プレビュープレビューとも呼ばれます) を表示する静的なアイコンビットマップを設定します。タスク バーでは、このビットマップを使用して、ウィンドウまたはタブのフル サイズのプレビューを表示できます。

構文

HRESULT DwmSetIconicLivePreviewBitmap(
                 HWND    hwnd,
                 HBITMAP hbmp,
  [in, optional] POINT   *pptClient,
                 DWORD   dwSITFlags
);

パラメーター

hwnd

ウィンドウへのハンドル。 このウィンドウは、呼び出し元のプロセスに属している必要があります。

hbmp

hwnd が指定するウィンドウを表すビットマップへのハンドル。

[in, optional] pptClient

ホスト ウィンドウのフレームからのタブ ウィンドウの クライアント領域 (クライアント ウィンドウ フレーム内のコンテンツ領域) のオフセット。 このオフセットにより、フレームなしで描画されるときに、タブ ウィンドウの内容をライブ プレビューで正しく描画できます。

dwSITFlags

ライブ プレビューの表示オプション。 このパラメーターには、0 または次の値を指定できます。

DWM_SIT_DISPLAYFRAME (0x00000001)

0x00000001。 指定されたビットマップの周囲にフレームを表示します。

戻り値

関数が成功した場合 はS_OK を返し、それ以外の場合はエラー値を返します。 このビットマップはキャッシュされないため、アプリケーションがこの関数を呼び出したときにウィンドウがプレビューされていない場合、関数は成功コードを返しますが、ビットマップは破棄され、使用されないことに注意してください。

注釈

ウィンドウの ライブ プレビュー ( ピーク プレビューとも呼ばれます) は、ユーザーがタスク バーのウィンドウのサムネイルの上にマウス ポインターを移動するか、Alt + TAB ウィンドウでサムネイルフォーカスを与えると表示されます。 このビューは、ウィンドウのフル サイズのビューであり、スナップショットまたは象徴的な表現にすることができます。

ウィンドウは通常、WM_DWMSENDICONICLIVEPREVIEWBITMAP メッセージに応答して DwmSetIconicLivePreviewBitmap 関数を呼び出します。 返されるビットマップは、ウィンドウまたはフレームのクライアント領域より大きくすることはできません。また、32 ビットの色深度を持つ必要があります。

デスクトップ ウィンドウ マネージャー (DWM) はビットマップのコピーを使用しますが、呼び出し元は元のビットマップの所有権を保持し、不要になったときに使用するリソースを解放します。 DWM がライブ プレビュー表現の表示を停止しても、DWM はビットマップのコピーを保持しません。

アプリケーションのウィンドウのライブ プレビューとして使用する静的なアイコンビットマップを設定するには、アプリケーションが DwmSetIconicLivePreviewBitmap 関数を呼び出します。 このビットマップを設定するには、次のコードに示すように、アプリケーションは 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));

次に、次のコードに示すように、アプリケーションは DwmSetIconicLivePreviewBitmap を呼び出して 、WM_DWMSENDICONICLIVEPREVIEWBITMAP メッセージに応答します。

        case WM_DWMSENDICONICLIVEPREVIEWBITMAP:
        {
            // This window is being asked to provide a bitmap to show in Peek preview.
            // This indicates the thumbnail in the taskbar is being previewed.
            RECT rectWindow = {0, 0, 0, 0};
            if (GetClientRect(hwnd, &rectWindow))
            {
                nWidth = rectWindow.right - rectWindow.left;
                nHeight = rectWindow.bottom - rectWindow.top;
            }

            hbm = CreateDIB(nWidth, nHeight);
            if (hbm)
            {
                hr = DwmSetIconicLivePreviewBitmap(hwnd, hbm, NULL, DWM_SIT_DISPLAYFRAME);
                DeleteObject(hbm);
            }
        }
        break;

完全な例については、「 アイコンサムネイルとライブプレビュービットマップのカスタマイズ 」サンプルを参照してください。

要件

   
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー dwmapi.h
Library Dwmapi.lib
[DLL] Dwmapi.dll;Uxtheme.dll