Я пытаюсь получить Windows по умолчанию системного цвета фона в формате COLORREF
с этим кодом:Попытка получить цвет фона по умолчанию с GetObject();
LOGBRUSH lb;
GetObject((HANDLE)(COLOR_BACKGROUND), sizeof(LOGBRUSH), &lb);
BG_COLOR = lb.lbColor;
char buff[250];
sprintf(buff, "BG_COLOR: 0x%08X;", BG_COLOR);
MessageBoxA(0, buff, "Alert!", MB_OK | MB_SYSTEMMODAL);
Но он возвращает 0x003E28F4
которого красный при установке класса окна hbrBackground
, как (HBRUSH)COLOR_BACKGROUND
, как это:
WndClass.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
цвет фона для окна появляется как серый (на WinXP) с шестигранной 0x00C8D0D4
(проверено с каркасная).
Насколько я знаю, 0x003E28F4
и 0x00C8D0D4
не то же самое
Что является причиной этого? Как получить цвет фона по умолчанию в формате RGB/COLORREF?
Вы пробовали '(HBRUSH) COLOR_BACKGROUND-1'? – Qix
Что возвращает GetObject? – Roddy
вы не можете вызвать 'GetObject' с' COLOR_BACKGROUND', его можно использовать только с 'WndClass.hbrBackground' и, следовательно, возвращает мусор. Кроме того, вам нужно добавить 1 к нему – 2013-03-08 17:10:08