Диалоги Visual Studio 2010 MFC: стиль Aero?

#c #mfc #visual-studio-2019

#visual-studio-2010 #windows-7 #mfc

Вопрос:

В настоящее время мой диалог MFC выглядит как в Windows 98. Есть ли способ заставить его использовать активный стиль Windows 7 (aero)?

(Я использую C )

Ответ №1:

Попробуйте добавить это в Stdafx.h

 #ifdef _UNICODE
#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
#endif
 

Комментарии:

1. Спасибо, это хорошее решение, теперь я могу избежать всех хлопот по созданию и внедрению манифеста. Только что протестировано в приложении Win32, и оно работает так, как ожидалось.

2. Я знаю, что опоздал на два года, но это все еще применимо в приложениях MFC. Приветствую совет.

3. Есть ли надежда на проекты, использующие многобайтовые кодировки вместо unicode? Я не установил _UNICODE.

4. Привет @masche — судя по этому сообщению на форуме , похоже, что в многобайтовых приложениях есть проблемы с общими элементами управления версии 6. Кто-то упоминает проблему в элементе управления редактированием или, может CEditView быть. Другие в нижнем потоке говорят, что у них не было никаких проблем. Я полагаю, вы могли бы попробовать прокомментировать _UNICODE ifdef и протестировать его.

Ответ №2:

Вам нужен манифест в вашем приложении с темой и убедитесь, что вы выполняете initcommon controlsex() .

Также взгляните на пакет функций MFC, также ниже приведена ссылка на примеры:

Ответ №3:

Убедитесь, что вы добавили действительный манифест в свое приложение.

Комментарии:

1. Я уже включил генерацию манифеста в свойствах (это было по умолчанию)

2. То, что манифест сгенерирован, не означает, что в нем указаны общие элементы управления 6. Откройте свой (не тематический) EXE-файл в обозревателе объектов Visual Studio с помощью File> Open и view, проверьте текущий манифест в его ресурсах.