パレット メッセージ ハンドラーの追加
[このページに関連付けられている機能 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;
関連トピック