DwmSetIconicLivePreviewBitmap 関数 (dwmapi.h)

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

構文

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

パラメーター

[in] hwnd

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

[in] hbmp

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

[in, optional] pptClient

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

[in] 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