Фон управления вкладками в приложении 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)
тогда флажки должны быть нарисованы на прозрачном фоне, который должен дать вам желаемый вид.