Как говорит Дэвид Хеффернан, когда визуальные стили (темы) включены, элемент управления на вкладке имеет причудливый градиентный фон.Поскольку это работает только тогда, когда дочерние элементы управления на вкладке имеют одинаковый фон, элементы управления, связанные с элементами управления вкладками, на самом деле имеют фоны, нарисованные родителем.
Да, это не работает с Темами.Как мне заставить это работать?
Нет, в этом весь смысл визуальных стилей.Если вы хотите этот вид детального контроля над внешним видом, вам следует отключить визуальные стили для ваших конкретных элементов управления.
Для этого вы можете использовать функцию SetWindowTheme
.Передайте дескриптор окну управления в качестве первого параметра и пустую строку для двух последних параметров:
SetWindowTheme(hwndCtrl, L" ", L" ");
Конечно, вам придется включить uxtheme.h
, чтобы вызвать эту функцию, иссылка на uxtheme.lib
.
Если вы хотите, чтобы ваше приложение продолжало работать над версиями Windows до XP (когда были представлены API для создания тем), вам нужно будет либо использовать задержку загрузки, либо LoadLibrary
и GetProcAddress
для динамического вызова функции.
Вы также можете попробовать вызвать функцию EnableThemeDialogTexture
и указать флаг ETDT_DISABLE
, чтобы отключить фоновое текстурирование, применяемое к диалоговым окнам вкладок.