我正在尝试使用以下代码获取COLORREF
格式的默认Windows系统背景颜色:
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
红色,同时将Window的类hbrBackground
设置为(HBRUSH)COLOR_BACKGROUND
,如下所示:
WndClass.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
窗口的背景颜色显示为灰色(在WinXP上),带有十六进制0x00C8D0D4
(使用gimp检查)。
据我所知,0x003E28F4
和0x00C8D0D4
不一样
造成这种情况的原因是什么?如何获得RGB / COLORREF格式的默认背景颜色?
答案 0 :(得分:2)
你不应该使用GetSysColor(COLOR_BACKGROUND)
http://msdn.microsoft.com/en-gb/library/windows/desktop/ms724371(v=vs.85).aspx