是否有GetThemeColor / Visual Styles API的有效参数组合列表

前端之家收集整理的这篇文章主要介绍了是否有GetThemeColor / Visual Styles API的有效参数组合列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图检索任务栏和/或我的应用程序主窗口的背景和文本颜色.原来,Windows 7没有返回正确的颜色.如果我切换到粉红色主题,Windows 7仍然会返回浅蓝色的窗口标题,虽然这不是真的.这发生在使用
GetSysColor(COLOR_ACTIVECAPTION);

以及使用
HTHEME hTheme = OpenThemeData(hwnd,L“WINDOW”);

HRESULT result = GetThemeColor(      
                hTheme,WP_CAPTION,CS_ACTIVE,TMT_FILLCOLORHINT,&color);

此外,我发现自己尝试各种参数组合来找出标题文本的颜色.我知道microsofts页面

Property IdentifiersParts and States

但这些数百个参数的大多数组合都是无效的.是否有任何列表和/或描述可以使用哪些组合?

GetThemeColor(      
                    hTheme,// BP_PUSHBUTTON,TMT_CAPTIONTEXT,&color);

返回“未找到元素”.

解决方法

根据我对XP主题的了解,.msstyles文件只是具有图像和属性(颜色,大小,字体等)的零件定义的集合,所有这些都是任意定义的. UxTheme API只返回此文件中的任何内容,并且某些属性组合的存在基本上取决于主题作者(这就是为什么如果主题API失败,您应该总是回到“经典”GetSysColor,GetSystemMetrics或SystemParametersInfo回报你想要的东西.

但是,你在这里提到了一个“粉红色主题”,所以我假设你说的是Aero Glass主题. Aero主题颜色由DWM处理,但与经典或UxTheme API颜色分开.要检索Aero窗口颜色,必须使用DwmGetColorizationColor,它将以0xAARRGGBB格式返回它(而不是COLORREF,即0x00BBGGRR,因此您需要在两种格式之间进行转换).为了首先查找是否启用了DWM组合(也称为“Aero Glass”),您必须调用DwmIsCompositionEnabled.

猜你在找的C&C++相关文章