Я унаследовал большое приложение MFC, которое содержит подкласс CComboBox
, который переопределяет OnPaint
. В настоящее время он рисует все вручную (с помощью линий и прямоугольников) и отображает поле со списком, которое выглядит явно в стиле Windows 98. Однако в остальном он отлично работает и предоставляет множество полезных пользовательских функций, на которые мы полагаемся, и перезапись всего элемента управления, вероятно, не вариант.
Я хотел бы модернизировать его так, чтобы OnPaint
рисовал в стиле Aero, где это возможно (отступая к старому коду, когда современные темы недоступны). Я сделал это с некоторыми другими пользовательскими элементами управления, такими как кнопки, и он отлично работает для наших целей. Я знаю, что есть некоторые крошечные варианты поведения, которые не получатся правильными, например плавные выделения при наведении мыши, но это не имеет большого значения для этого приложения.
У меня есть доступ к CVisualStylesXP
ckass, поэтому у меня уже есть инфраструктура, позволяющая довольно легко совершать такие звонки, как OpenThemeData
, GetThemeColor
или DrawThemeBackground
(через LoadLibrary
, поэтому мы не форсируем Vista как минимальная система). К сожалению, я не знаю правильную последовательность вызовов, чтобы получить красивое комбинированное окно с соответствующей темой рамкой и кнопкой раскрывающегося списка.
Кто-нибудь знает, что здесь делать?