我試圖得到默認的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