Фон управления вкладками в приложении ATL, стили XP

У меня есть приложение ATL с диалоговым окном, содержащим элемент управления TAB. Приложение использует общий манифест управления.

В XP с визуальными стилями фон элемента управления вкладкой отличается от цвета диалогового окна и элементов управления (в основном это флажки), поэтому он выглядит довольно некрасиво.

Скриншот

Как я могу это исправить?

3 ответа

Решение

Здесь вы можете найти ответ на свой вопрос.

Очевидно, есть одна вещь, которую нужно сделать, чтобы правильно отобразить страницы управления вкладками, используя визуальные стили XP.

В обработчике WM_INITDIALOG для каждой страницы вызовите API uxtheme EnableThemeDialogTexture

С ETDT_ENABLETAB Отметьте, что это автоматически изменяет цвет фона диалога и всех его дочерних элементов управления, чтобы рисовать соответствующим образом на вкладке.

Страницы диалога не нуждаются в каком-либо прозрачном флаге или любом другом бите стиля, установленном иначе, чем ранее. Если вы переопределили WM_ERASEBKGND или же WM_CTLCOLORDLG на ваших страницах DialogProc вам нужно будет вернуться к обработке по умолчанию (возврат FALSE).

Флажки будут отправлять уведомления WM_CTLCOLORBTN их родителям. Если для идентификаторов элемента управления флажок обработчик сообщений родительского окна возвращает результат

GetStockObject(HOLLOW_BRUSH)

тогда флажки должны быть нарисованы на прозрачном фоне, который должен дать вам желаемый вид.

Другие вопросы по тегам