加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:40:50 所属栏目:百科 来源:网络整理
导读:我试图检索任务栏和/或我的应用程序主窗口的背景和文本颜色.原来,Windows 7没有返回正确的颜色.如果我切换到粉红色主题,Windows 7仍然会返回浅蓝色的窗口标题,虽然这不是真的.这发生在使用 GetSysColor(COLOR_ACTIVECAPTION); 以及使用 HTHEME hTheme = Open
我试图检索任务栏和/或我的应用程序主窗口的背景和文本颜色.原来,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 Identifiers和Parts 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读