Я пытаюсь нарисовать свои собственные элементы управления с помощью библиотеки uxTheme в Windows, и я не могу понять, почему мой элемент управления не похож на обычный элемент управления Windows, который (предположительно) использует ту же тему, что и яm:
На изображении выше показан стандартный 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;
}
Любые предложения о том, почему эти два элемента управления не выглядят одинаково, будут очень благодарны.
Спасибо,
Джеймс