Мы пишем настольные приложения для Windows с использованием C++ и Win32. Наши диалоговые окна имеют уродливый внешний вид с «стилем Windows XP»: фон для статического текста серый. Если фон диалогового окна также серый, это не проблема, но внутри элемента управления вкладки, где фон белый, серый фон для текста очень заметен.Windows XP Стиль: Почему мы получаем темно-серый фон на статических текстовых виджетах?
В прошлом мы сделали много собственных чертежей элементов управления, но в наши дни мы стараемся как можно больше использовать стандартный look'n'feel и избегать как можно большего превышения стандартного поведения.
Мы используем API Win32, который немного устарел, но я думаю, что проблема возникает даже с ATL. Мы создаем DIALOGTEMPLATE. Текст находится в «статическом» элементе управления (0x0082). Единственный флаг, который мы установили для стиля, - «SS_LEFT». Текстовый элемент управления находится внутри элемента управления вкладкой: «SysTabControl32» с только одним флагом: WS_CLIPSIBLINGS, установленным на нем. Я экспериментировал с SS_WHITERECT и WS_EX_TRANSPARENT и другими настройками, но безрезультатно.
Все это нарисовано стандартным обработчиком сообщений диалогового окна Windows. Мой главный вопрос: «Что мы делаем не так?» а не «как я могу обойти это?», хотя я соглашусь на последнее, если никто не сможет помочь мне с первым.
Любые идеи?
Вы не видите, что вы используете файл манифеста для просмотра темы XP? – Rob
Да, мы: #pragma comment (linker, "/ manifestdependency: \" type = 'win32' "\ " name = 'Microsoft.Windows.Common-Controls' "\ " version = '6.0.0.0' "\ " processorArchitecture = '*' "\ " publicKeyToken = '6595b64144ccf1df' "\ " language = '*' \ "") –