Фон управления вкладкой в ​​приложении ATL, стили XP - PullRequest
1 голос
/ 22 апреля 2009

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

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

Скриншот

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

Ответы [ 3 ]

5 голосов
/ 06 августа 2009

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

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

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

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

0 голосов
/ 15 июля 2009

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

0 голосов
/ 23 апреля 2009

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

GetStockObject(HOLLOW_BRUSH)

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

...