2013-03-08 34 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(與檢查顯示GIMP)。

據我所知,0x003E28F40x00C8D0D4是不一樣的

是什麼原因造成的?我如何獲得RGB/COLORREF格式的默認背景色?

+0

您是否嘗試過'(HBRUSH)COLOR_BACKGROUND-1'? – Qix 2013-03-08 17:04:19

+0

GetObject返回什麼? – Roddy 2013-03-08 17:06:14

+3

您無法使用'COLOR_BACKGROUND'調用'GetObject',它只能與'WndClass.hbrBackground'一起使用,因此會返回垃圾。除此之外,你還需要添加1個 – 2013-03-08 17:10:08

回答