尝试使用GetObject();获取默认背景色

Trying to get default background color with GetObject();

本文关键字:获取 默认 背景色 GetObject      更新时间:2023-10-16

我试图获得默认的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检查)。

据我所知,0x003E28F40x00C8D0D4是不一样的

是什么原因造成的?如何获得RGB/COLORREF格式的默认背景色?

你不应该使用GetSysColor(COLOR_BACKGROUND)

http://msdn.microsoft.com/en-gb/library/windows/desktop/ms724371 (v = vs.85) . aspx