我试图获得默认的Windows系统背景颜色在COLORREF
格式与此代码:
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检查)。
据我所知,0x003E28F4
和0x00C8D0D4
是不一样的
是什么原因造成的?如何获得RGB/COLORREF格式的默认背景色?
你不应该使用GetSysColor(COLOR_BACKGROUND)
http://msdn.microsoft.com/en-gb/library/windows/desktop/ms724371 (v = vs.85) . aspx