Вы действительно должны показать нам, что вы в настоящее время делаете (код), если вы хотите, чтобы люди могли помочь. Этот ответ будет столько же догадок, сколько и правильный ответ. поэтому.
Вероятно, вам не нужно возиться с дескриптором темы. Просто включить темы для вашего приложения должно быть достаточно, если вы правильно установите стили окон для своих элементов управления.
Вам необходимо убедиться, что вы отправляете сообщение WM_SETFONT
в создаваемые вами окна. Многие стандартные элементы управления по умолчанию используют действительно уродливый обратно совместимый шрифт, пока вы не дадите им новый. В большинстве случаев вы, вероятно, можете использовать GetStockObject(DEFAULT_GUI_FONT)
(или GetStockFont()
, если вы включите windowsx.h) в качестве шрифта, который вы им отправляете. Если вы используете стандартный шрифт, вам не нужно отслеживать его и освобождать позже.
Вам также нужно установить стиль WS_EX_CLIENTEDGE
или WS_EX_STATICEDGE
для большинства элементов управления, чтобы получить более новое поведение при отображении. Я думаю, что обычно WS_EX_STATICEDGE
, когда темы включены, и WS_EX_CLIENTEDGE
, когда они не включены. Но вам нужно будет поиграться с этим. Используйте Spy ++, чтобы посмотреть на различные элементы управления, посмотреть, какие стили они используют, и убедиться, что вы соответствуете им. Отключение этих стилей приводит к отключению рисования темы.
Обратите внимание, что это флаги в стиле _EX_
, поэтому вам нужно будет использовать CreateWindowEx
вместо CreateWindow
Могут быть и другие вещи, но попробуйте это и посмотрите, как далеко вы зашли.