Кнопки старого стиля приложения MFC и индикаторы выполнения
Я только что обновил приложение mfc vs2010 до vs2012, и у меня возникли проблемы, когда новые блестящие кнопки окон и индикаторы не отображаются, они отображаются как кнопки в стиле Windows 2000.
У меня есть следующий код в моем файле stdafx.h:
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32'
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
я звоню InitCommonControlsEx
и мне не нужен файл манифеста, насколько я понимаю, чтобы появился новый стиль. Есть идеи?
1 ответ
Я опаздываю к игре, но для меня проблема заключалась в небольшом параметре компоновщика под названием /ALLOWISOLATION
( описание здесь).
Этот параметр компоновщика должен быть установлен на Yes
иначе манифесты даже не будут рассматриваться. И никакой манифест означает, что общие средства управления v5.82 DLL
будет загружен вместо версии v6.
По сообщениям о загрузке / выгрузке модуля отладчика видно, относится ли это к вам (номер версии записывается вместе с записью).
Странно то, что приложение все еще оказалось "наполовину тематическим". Например, вы можете переключаться между темами XP и Office, но, например, кнопка будет лишена любого современного стиля. Вероятно, другая DLL (uxtheme
?).
Также изображения из списка изображений будут выглядеть неровными (без альфа-канала, даже если значки были строго 32bpp).