我试图得到默认的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)。
据我所知,0x003E28F4
和0x00C8D0D4
是不一样的
是什么原因造成的?我如何获得RGB/COLORREF格式的默认背景色?
您是否尝试过'(HBRUSH)COLOR_BACKGROUND-1'? – Qix 2013-03-08 17:04:19
GetObject返回什么? – Roddy 2013-03-08 17:06:14
您无法使用'COLOR_BACKGROUND'调用'GetObject',它只能与'WndClass.hbrBackground'一起使用,因此会返回垃圾。除此之外,你还需要添加1个 – 2013-03-08 17:10:08