2013-03-08 2 views
0

Я пытаюсь получить 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?

+0

Вы пробовали '(HBRUSH) COLOR_BACKGROUND-1'? – Qix

+0

Что возвращает GetObject? – Roddy

+3

вы не можете вызвать 'GetObject' с' COLOR_BACKGROUND', его можно использовать только с 'WndClass.hbrBackground' и, следовательно, возвращает мусор. Кроме того, вам нужно добавить 1 к нему – 2013-03-08 17:10:08

ответ

Смежные вопросы