Вы, наверное, помните, когда Windows XP появилась с таким свежим внешним видом, и вы могли вернуться к классическому внешнему виду Windows 95/2000, или вы могли изменить цветовую тему.Это называлось визуальные стили , что улучшило поддержку тем в Windows.
Визуальные стили с тех пор оставались функцией ,Windows Vista и 7 представили Aero, но они все еще позволяли использовать классическую тему.Windows 8 удалила как Aero, так и классическую тему, и добавила тему Metro.Высококонтрастные темы теперь являются частью визуальных стилей и больше не имеют классического внешнего вида.
Таким образом, классическое тематическое приложение в Windows 7, когда ожидалось, что это стиль Aero, является проблемой с визуальным стилем.приложение.Я не уверен, почему, но Microsoft не оставила старую классическую тему необязательной при переносе API на новый внешний вид.
Итак, как мне применить современный стиль?
В любом случае В этой статье MSDN объясняется, как включить визуальные стили для вашего приложения.Я видел людей, которые говорили, что включение Unicode (определяющее UNICODE
) сделает это, но это , а не .По сути, вам просто нужно написать файл манифеста с указанием версии 6 библиотеки DLL общих элементов управления в качестве требования, а затем встроить его в качестве ресурса или поместить в appname.exe.manifest
в каталоге исполняемого файла.Пример манифеста будет выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="*"
name="CompanyName.ProductName.YourApplication" type="win32"/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" type="win32" processorArchitecture="*"
publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
</assembly>
Если вы выберете опцию встраивания, не забудьте включить winuser.h
в ваш файл ресурсов.Вы также можете инициализировать библиотеку общих элементов управления в WinMain
в соответствии с этим руководством по MinGW :
В некоторых примерах я пропустил этот шаги это может вызвать некоторые странные поведения в определенных версиях операционной системы и в определенных условиях, например, невидимые кнопки или невозможность создания диалогов.
INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof(icc);
icc.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&icc);