Недавно мы переключили наше приложение C++ MFC с VS2005 на VS2008. К сожалению, при этом наш пользовательский интерфейс имеет проблемы с внешним видом, причем такие элементы, как групповые поля, выглядят голубыми, а не черными, диалоги свойств, имеющие белый фон и т. Д. Я полагаю, что в VS2008 MFC был изменен для учета темы ОС (в моем случае XP по умолчанию тема). К сожалению, изменение всех наших элементов управления и пользовательских панелей инструментов, чтобы приложение выглядело прилично снова, потребует большой работы.Отключить тему XP в VS2008 скомпилированном MFC-приложении
Итак, кто-нибудь знает, есть ли способ в коде, чтобы вернуть приложение в режим 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.
благодаря
Привет, я проверил наш файл манифеста, и была ссылка на commctl32 v6, которая не была в нашем манифесте vs2005. Я удалил это, и это не имело значения. Я попытался ссылаться на v5.82 файла comctl32.dll, но мое приложение не запускается. У вас есть пример манифеста (version/publickeytoken info)? – 2009-03-11 16:24:26
К сожалению, я этого не делаю. Обычно я не использую C++. Я только обрабатывал файлы манифеста после преобразования чего-либо из Java в скомпилированный исполняемый файл по запросу клиента, а скомпилированная версия закончилась загрузкой более старой comctl32.dll, когда она должна была иметь более новую. – Powerlord
Вы должны проверить свой файл 'stdafx.h'. Здесь также можно найти ссылку на манифест. Вы можете попробовать изменить версию манифеста, но есть 'publicKeyToken', который, как мне кажется, также нужно будет изменить. – djeidot