2013-03-08 19 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

回答