Из документации :
Сообщение WM_SYSCOLORCHANGE отправляется во все окна верхнего уровня, когда
внесено изменение в настройку цвета системы.
Приложения, которые имеют кисти, использующие существующие системные цвета, должны
удалите эти кисти и воссоздайте их, используя новые системные цвета.
Объявление глобальной переменной
HBRUSH g_hBackground = NULL;
В обработчике сообщений WM_CREATE создайте кисть фона
case WM_CREATE:
g_hBackground = (HBRUSH)(COLOR_3DFACE + 1);
break;
Использовать кисть в сообщении краски
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
FillRect(hdc, &rcClient, g_hBackground);
EndPaint(hwnd, &ps);
break;
Ручка системы смены цвета
case WM_SYSCOLORCHANGE:
if (g_hBackground)
{
DeleteObject(g_hBackground);
}
g_hBackground = (HBRUSH)(COLOR_3DFACE + 1);
break;
Теперь я меняю цвет системы на панели управления, все работает, фон закрашивается новым цветом.
Удалите весь код обработчика WM_SYSCOLORCHANGE, я меняю системный цвет на панели управления, все тоже работает, фон закрашивается новым цветом.
Так зачем мне это сообщение?
ВОПРОС
Что означает это сообщение для окна верхнего уровня?
Только пересылка этого сообщения дочерним окнам?
Или я что-то пропустил?