通常,大多数标准控件使用的颜色都可以从GetSysColor ,我运行了一个包含所有COLOR_常量(0-30)的testing,并将其与组框边框的颜色进行比较,但没有一个匹配。 我正在使用XP,并且组框边框的颜色是0xD0D0BF 。
如何获取用于绘制组框边框的系统颜色?
CloseHandle函数调用和SMBclosures请求之间的延迟
Silex SessionServiceProvider让我在Windows 8下载
我怎样才能使用Pyntht与Enthought冠层
Amazon SQS侦听器
使用closuresbuttonclosuresOpencv窗口
使用“经典”主题(在XP上,或以前版本的Windows中的唯一主题),组框边框不是单一的颜色。 它实际上是一条“蚀刻”线,由两条不同颜色的线组成。 每种颜色都有一个COLOR_*值,但您不想尝试以这种方式重新创建线条。 而是使用GDI的DrawEdge函数和EDGE_ETCHED标志。
但是,如果启用了主题,则组框边框实际上是单个颜色,并且该颜色因所选主题而异。 没有办法使用GetSysColor检索主题颜色,因为它们没有相应的COLOR_*值。 这个API 早在构思主题之前就已经发明出来了。 相反,有一套全新的主题API。 你在这里感兴趣的是GetThemeColor ,但为了使用它,你还需要OpenThemeData和CloseThemeData 。
棘手的部分是搞清楚传递给OpenThemeData函数的内容。 这个问题可能有帮助。 组框控件实际上是一种特殊类型的按钮控件,所以你想要的风格是:
类: BUTTON
部分: BP_GROUPBox
状态: GBS_norMAL (也可能是GBS_disABLED )
物业编号: TMT_BORDERCOLOR ???
请确保您的代码对禁用主题时有适当的后备支持! 使用IsAppThemed函数在运行时动态确定并选择适当的绘图代码路径。
编辑:在XP虚拟机上进行了一些测试之后,找不到合适的TMT_*属性ID来指定组合框边框的正确颜色。 我不确定这是怎么回事 但是您可以使用DrawThemeBackground函数为您绘制边框:
HTHEME hTheme = OpenThemeData(grpBox->m_hWnd,L"Button"); DrawThemeBackground(hTheme,hDC,BP_GROUPBox,GBS_norMAL,&rcArea,NULL); CloseThemeData(hTheme);
不幸的是,这并不能告诉你如何获得颜色值本身。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。