我正在尝试使用 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;
}
任何关于为什么这两个控件看起来不一样的建议将不胜感激。
Thanks,
James