添加调色板消息处理程序

[与此页面关联的功能 DrawDib 是一项旧功能。 它已被 MediaComposition 类取代。 MediaComposition 类已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaComposition 类 而不是 DrawDib。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

下面的示例演示 WM_PALETTECHANGEDWM_QUERYNEWPALETTE 消息的简单消息处理程序。 该示例使用 DrawDibRealize 函数处理 WM_QUERYNEWPALETTE 消息。

应用程序应通过使目标窗口失效来响应 WM_QUERYNEWPALETTE 消息,让 DrawDibDraw 函数重绘图像。 应使用 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