CMFCButton в стиле Vista

Кажется, я не могу заставить CMFCButton отображаться в стиле Vista в приложении диалогового окна. Я использую VS2008 с пакетом функций MFC.

Вот несколько шагов, чтобы воспроизвести мою проблему:

  • Создайте новый проект MFC;
  • Укажите проект на основе диалогового окна.
  • Добавьте две кнопки в основной диалог.
  • Добавьте переменную для каждой кнопки. Сделайте одну из переменных CButton, а другую CMFCButton.
  • Скомпилируйте и запустите.

тестовое изображение приложения http://img7.imageshack.us/img7/3/testapp.png < / а>

Как видите, CButton имеет правильный стиль, а CMFCButton - нет.

Что мне здесь не хватает?


person djeidot    schedule 23.09.2009    source источник


Ответы (1)


CMFCButton имеет стиль BS_OWNERDRAW, установленный по умолчанию - вы можете удалить его в OnInitDialog() для вашего диалога:

mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0);

Однако удаление стиля рисования владельца приводит к тому, что многие методы CMFCButton становятся бесполезными (например, SetTextColor). Вы можете получить кнопку для рендеринга с использованием текущей темы Windows, настроив визуальный менеджер:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

Это делается вместо ModifyStyle, приведенного выше, в результате чего кнопки соответствуют стилю по умолчанию, но по-прежнему имеют новые функции рендеринга.

person Steve Beedie    schedule 23.09.2009
comment
Спасибо, что проблема решена. Но означает ли это, что у меня не будет доступа к специфическим функциям CMFCButton, таким как изменение цвета текста? - person djeidot; 23.09.2009
comment
Хороший момент - оказывается, есть другой способ, ответ дополнен деталями. - person Steve Beedie; 24.09.2009