DwmSetIconicThumbnail 関数 (dwmapi.h)

サムネイル表示として使用する、ウィンドウまたはタブ上の静的なアイコンビットマップを設定します。 タスク バーでは、このビットマップをウィンドウまたはタブのサムネイル 切り替えターゲットとして使用できます。

構文

HRESULT DwmSetIconicThumbnail(
  [in] HWND    hwnd,
  [in] HBITMAP hbmp,
  [in] DWORD   dwSITFlags
);

パラメーター

[in] hwnd

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

[in] hbmp

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

[in] dwSITFlags

サムネイルの表示オプション。 次のいずれかの値です。

0 (0x00000000)

指定されたサムネイルの周囲にフレームは表示されません。

DWM_SIT_DISPLAYFRAME (0x00000001)

指定されたサムネイルの周囲にフレームを表示します。

戻り値

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

解説

アプリケーションは通常、ウィンドウのWM_DWMSENDICONICTHUMBNAIL メッセージを受信した後に DwmSetIconicThumbnail 関数を呼び出します。 サムネイルは、そのメッセージで指定されている x 座標と y 座標の最大値を超えないようにしてください。 サムネイルには、32 ビットの色深度も必要です。

アプリケーションは DwmInvalidateIconicBitmaps を呼び出して、デスクトップ ウィンドウ マネージャー (DWM) に、アイコンのサムネイルとライブ プレビューのビットマップが古く、更新する必要があることを示します。 その後、DWM は、必要に応じてウィンドウから新しいバージョンを要求します。 ただし、DWM ビットマップ キャッシュがいっぱいの場合、DWM は更新されたバージョンを要求しません。

DWM はビットマップのコピーを使用しますが、メモリ制約のため、アプリケーションはこのコピーをいつでも解放できます。 コピーが解放されると、ウィンドウには通知されませんが、サムネイルが再度必要になったときに、後続 のWM_DWMSENDICONICTHUMBNAIL 要求を受け取る可能性があります。 呼び出し元は元のビットマップの所有権を保持し、不要になったときに使用するリソースを解放する役割を担います。

DwmSetIconicThumbnail を呼び出す前に、次の例に示すように、アプリケーションはまず 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));

次に、次の例に示すように、アプリケーションは WM_DWMSENDICONICTHUMBNAIL メッセージに応答して DwmSetIconicThumbnail 関数を呼び出します。

        case WM_DWMSENDICONICTHUMBNAIL:
        {    
            // This window is being asked to provide its iconic bitmap. This indicates
            // a thumbnail is being drawn.
            hbm = CreateDIB(HIWORD(lParam), LOWORD(lParam)); 
            if (hbm)
            {
                hr = DwmSetIconicThumbnail(hwnd, hbm, 0);
                DeleteObject(hbm);
            }
        }
        break;

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

要件

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