Отключить тему XP в скомпилированном приложении MFC VS2008 - PullRequest
0 голосов
/ 11 марта 2009

Мы только что переключили наше приложение C ++ MFC с VS2005 на VS2008. К сожалению, при этом у нашего пользовательского интерфейса возникают проблемы с внешним видом, такие как групповые блоки, которые отображаются синим цветом, а не черным, диалоговые окна свойств имеют белый фон и т. Д. Я предполагаю, что в VS2008 MFC был изменен в соответствии с темой ОС (в моем случае XP по умолчанию тема). К сожалению, изменение всех элементов управления и пользовательских панелей инструментов, чтобы приложение снова выглядело прилично, потребует много работы.

Итак, кто-нибудь знает, есть ли в коде способ вернуть приложение в режим VS2005? Я нашел следующий код

typedef void (WINAPI *tSetThemeAppProperties)(  DWORD );

tSetThemeAppProperties pSetThemeAppProperties=0;
HINSTANCE  handle  = ::LoadLibrary("UxTheme.dll");

if (handle) 
    pSetThemeAppProperties = (tSetThemeAppProperties) ::GetProcAddress(handle,"SetThemeAppProperties"); 


if ( pSetThemeAppProperties)
{
    // call function
    pSetThemeAppProperties(0/*dwFlags*/);
}
::FreeLibrary(handle);

Что не позволяет выбрать тему XP, но отключает ВСЕ темы и делает приложение более устаревшим, чем в VS2005.

спасибо

Ответы [ 2 ]

2 голосов
/ 11 марта 2009

Может случиться так, что VS2008 включает в проект файл Manifest , который загружает версию 6.0 comctl32.dll, а не 5.82 comctl32.dll ... оба поставляются с Windows XP и новее.

1 голос
/ 11 марта 2009

В разделе «Свойства-> Свойства конфигурации-> Компоновщик-> Файл манифеста» установите для параметра «Создать манифест» значение «Нет».

Затем добавьте свой собственный файл манифеста, если хотите, и установите его в «Свойства-> Свойства конфигурации-> Инструмент манифеста-> Ввод и вывод», «Манифест ресурса ввода».

Просто убедитесь, что если вы добавляете свой собственный файл манифеста, он не содержит ссылку на commctl32 v6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...