パレット メッセージ ハンドラーの追加

[このページに関連付けられている機能 DrawDib は、従来の機能です。 MediaComposition クラスに置き換わりました。 MediaComposition クラスは、Windows 10とWindows 11用に最適化されています。 可能であれば、新しいコードで DrawDib の代わりに MediaComposition クラスを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

次の例は、WM_PALETTECHANGEDメッセージとWM_QUERYNEWPALETTE メッセージの単純なメッセージ ハンドラーを示しています。 この例では 、DrawDibRealize 関数を使用して 、WM_QUERYNEWPALETTE メッセージを処理します。

アプリケーションは、DrawDibDraw 関数でイメージを再描画できるように変換先ウィンドウを無効にして、WM_QUERYNEWPALETTE メッセージに応答する必要があります。 パレットを実現するには、DrawDibRealize 関数を使用してWM_PALETTECHANGED メッセージに応答する必要があります。

case WM_PALETTECHANGED: 
    if ((HWND)wParam == hwnd) 
        break; 
case WM_QUERYNEWPALETTE: 
    hdc = GetDC(hwnd); 
    f = DrawDibRealize(hdd, hdc, FALSE) > 0; 
    ReleaseDC(hwnd, hdc); 
    if (f) 
        InvalidateRect(hwnd, NULL, TRUE); 
    break; 

DrawDib の使用