如何在Windows 8中获取活动窗口的标题颜色

时间:2012-09-21 09:53:19

标签: c++ windows delphi winapi visual-c++

如何在Windows 8中获取活动窗口的标题颜色?

我试图调用GetSysColor(COLOR_ACTIVECAPTION),但它会返回不同的颜色。这很奇怪,因为在Windows 7中它可以正常工作。有没有其他方法可以获取活动窗口的标题颜色或任务栏的颜色?

1 个答案:

答案 0 :(得分:2)

DWORD WINAPI GetSysColor(
 _In_  int nIndex
 );

对于GetSysColor()函数,如果nIndex参数超出范围,则返回值为零。由于零也是有效的RGB值,因此无法使用GetSysColor()来确定当前平台是否支持系统颜色。相反,使用GetSysColorBrush()函数,如果不支持颜色,则返回NULL

Click to see the syntax and usage.

另一种选择是使用DwmGetColorizationColor()功能,该功能可以检索用于Desktop Window Manager (DWM)玻璃成分的当前颜色。此值基于当前颜色方案,可由用户修改。应用程序可以通过处理WM_DWMCOLORIZATIONCOLORCHANGED通知来监听颜色更改。

HRESULT WINAPI DwmGetColorizationColor(
  _Out_  DWORD *pcrColorization,
  _Out_  BOOL *pfOpaqueBlend
);