Hinzufügen von Paletten-Nachrichtenhandlern

[Das dieser Seite zugeordnete Feature DrawDib ist ein Legacyfeature. Sie wurde durch die MediaComposition-Klasse abgelöst. Die MediaComposition-Klasse wurde für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit die MediaComposition-Klasse anstelle von DrawDib verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Im folgenden Beispiel werden einfache Nachrichtenhandler für die WM_PALETTECHANGED - und WM_QUERYNEWPALETTE-Nachrichten veranschaulicht. Im Beispiel wird die DrawDibRealize-Funktion verwendet, um die WM_QUERYNEWPALETTE Nachricht zu verarbeiten.

Ihre Anwendung sollte auf die WM_QUERYNEWPALETTE-Nachricht reagieren, indem sie das Zielfenster ungültig macht, damit die DrawDibDraw-Funktion ein Bild neu zeichnen kann. Sie sollten auf die WM_PALETTECHANGED Nachricht reagieren, indem Sie die DrawDibRealize-Funktion verwenden, um die Palette zu realisieren.

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; 

Verwenden von DrawDib