gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:22:25 26 4
gpt4 key购买 nike

我正在尝试检索任务栏和/或我的应用程序主窗口的背景和文本颜色。事实证明,Windows 7 没有返回正确的颜色。如果我即切换到粉红色主题,Windows 7 仍会为窗口标题返回浅蓝色,尽管那不是真的。这发生在使用

GetSysColor(COLOR_ACTIVECAPTION); 

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

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

此外,我发现自己尝试了各种参数组合来找出字幕文本的颜色。我知道微软页面

Property IdentifiersParts and States

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

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

返回“找不到元素”。

最佳答案

根据我对 XP 主题的了解,.msstyles 文件只是具有图像和属性(颜色、大小、字体等)的部件定义的集合,所有这些都是任意定义的。 UxTheme API 只返回此文件中的任何内容,并且特定属性组合的存在基本上取决于主题作者(这就是为什么您应该始终回退到“经典”GetSysColorGetSystemMetricsSystemParametersInfo 如果主题 API 无法返回您正在寻找的任何内容。

但是,您在这里提到了“粉红色主题”,所以我假设您说的是 Aero Glass 主题。 Aero 主题颜色由 DWM 处理,并且与经典或 UxTheme API 颜色分开。为了检索 Aero 窗口颜色,您必须使用 DwmGetColorizationColor,它将以 0xAARRGGBB 格式返回(与 COLORREF 0x00BBGGRR 相对,因此您需要在两种格式之间转换)。为了首先确定是否启用了 DWM 合成(又名“Aero Glass”),您必须调用 DwmIsCompositionEnabled

关于c - 是否有 GetThemeColor/Visual Styles API 的有效参数组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com