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

时间:2013-03-08 17:01:45

标签: c++ winapi user-interface

我正在尝试使用以下代码获取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检查)。

据我所知,0x003E28F40x00C8D0D4不一样

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

1 个答案:

答案 0 :(得分:2)