我正在使用Windows中的uxTheme库来绘制我自己的自定义控件,我无法理解为什么我的控件看起来不像常规的Windows控件(据说)使用相同的主题我'使用:
上图显示了标准的Windows ComboBox(顶部)和使用ComboBox主题(底部)绘制的自定义控件。我无法解决的问题是为什么我控制的边框与标准控件的形状和颜色不同。
在我的类构造函数中,我打开主题数据:
mComboTheme = OpenThemeData( hwnd, L"COMBOBOX" );
然后在WM_PAINT的处理程序中,我只是绘制了ComboBox组件的两个部分:
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
RECT client;
if( GetUpdateRect( hwnd, &ps.rcPaint, false ))
{
hdc = BeginPaint( hwnd, &ps );
GetClientRect( hwnd, &client );
if( IsThemeBackgroundPartiallyTransparent( mComboTheme, CP_BACKGROUND, CBXS_HOT ))
{
DrawThemeParentBackground( hwnd, hdc, &ps.rcPaint );
}
DrawThemeBackground( mComboTheme, hdc, CP_BACKGROUND, CBXS_HOT, &client, &ps.rcPaint );
client.left = client.right - 20;
DrawThemeBackground( mComboTheme, hdc, CP_DROPDOWNBUTTONRIGHT, CBXSR_HOT, &client, ps.rcPaint );
EndPaint( *this, &ps );
}
break;
}
对于为什么这两个控件看起来不一样的任何建议都将不胜感激。
谢谢,
詹姆斯
答案 0 :(得分:4)
您使用DrawThemeBackground
和CP_BACKGROUND
致电CP_DROPDOWNBUTTONRIGHT
。如果您希望边框与标准组合框相匹配,也许您也应该使用CP_BORDER
来调用它?