获取Group Box行的主题属性

时间:2011-05-08 18:26:09

标签: windows winapi groupbox

我的目标是绘制一个非矩形但不会切掉角落的组合框。我并不仅仅意味着剪切角落,而是具有连续的闭合路径,其中角落是“缩进的”。我希望这与当前主题的颜色/风格相匹配。

我注意到在Windows XP上,Group Box有1像素灰线,但在Windows 7上有一条3D效果,在白线旁边有一条灰线(内部的白线除了底部)它在灰线下方。)

您可以使用以下内容获取Group Box文本标签的颜色:

COLORREF cref;
GetThemeColor(hTheme, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, &cref);

所以,我试图找出如何获得组合框中使用的线条的颜色和/或属性,然后(我希望)能够绘制我想要与组匹配的线条盒子样式通过分别绘制我想要的每一块形状。我不确定用于描述线条的属性是什么,或者如果函数线DrawRect将使用合适的笔绘制3D效果。有没有办法设置一个笔来绘制这些3D效果(双阴影平行线)?

感谢。

1 个答案:

答案 0 :(得分:1)

我总是发现组合框的意外之处在于它们实际上是一种按钮样式。 (BS_GROUPBOX)。

主题组框(XP和更高版本关闭经典模式)在VSCLASS_BUTTON中使用主题部分BP_GROUPBOX。您可以使用通常的主题API来获取和绘制。如果您的组框需要文本,您可以使用DrawThemeText。

还有用于绘制非主题组框的API(例如DrawEdge),但我不记得细节,也不太可能需要它们。

像往常一样,我会指出,重现控件的行为总是比你想象的要难。

马丁