Udostępnij przez


Dodawanie programów obsługi komunikatów palety

[Funkcja skojarzona z tą stroną, DrawDib, jest starszą funkcją. Została zastąpiona przez klasę MediaComposition. klasa MediaComposition została zoptymalizowana pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał klasy MediaComposition zamiast DrawDib, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

W poniższym przykładzie przedstawiono proste programy obsługi komunikatów dla komunikatów WM_PALETTECHANGED i WM_QUERYNEWPALETTE. W przykładzie użyto funkcji DrawDibRealize w celu przetworzenia komunikatu WM_QUERYNEWPALETTE.

Aplikacja powinna odpowiedzieć na komunikat WM_QUERYNEWPALETTE, unieważniając okno docelowe, aby umożliwić funkcji DrawDibDraw ponowne rysowanie obrazu. Aby zrealizować paletę, należy odpowiedzieć na komunikat WM_PALETTECHANGED przy użyciu funkcji DrawDibRealize.

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; 

Korzystanie z DrawDib