The WM_PALETTEISCHANGING message informs applications that an application is going to realize its logical palette.
WM_PALETTEISCHANGING hwndRealize = (HWND) wParam; // window to realize palette
If an application processes this message, it should return zero.
The application changing its palette does not wait for acknowledgment of this message before changing the palette and sending the WM_PALETTECHANGED message. As a result, the palette may already be changed by the time an application receives this message.
If the application either ignores or fails to process this message and a second application realizes its palette while the first is using palette indices, there is a strong possibility that the user will see unexpected colors during subsequent drawing operations.
WM_PALETTECHANGED, WM_QUERYNEWPALETTE
See: