【问题标题】:Trying to get default background color with GetObject();尝试使用 GetObject() 获取默认背景颜色;
【发布时间】:2013-03-08 17:01:44
【问题描述】:

我正在尝试使用此代码以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,这是红色,同时将窗口的类hbrBackground设置为(HBRUSH)COLOR_BACKGROUND,如下所示:

WndClass.hbrBackground = (HBRUSH)COLOR_BACKGROUND;

窗口的背景颜色显示为 灰色(在 WinXP 上),十六进制为 0x00C8D0D4(用 gimp 检查)。

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

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

【问题讨论】:

  • 你试过(HBRUSH)COLOR_BACKGROUND-1 吗?
  • GetObject 返回什么?
  • 你不能用COLOR_BACKGROUND调用GetObject,它只能和WndClass.hbrBackground一起使用,因此返回垃圾。此外,您需要向其添加 1

标签: c++ winapi user-interface


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2011-10-09
    • 2013-11-19
    • 1970-01-01
    • 2013-06-26
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多