Я недавно перенес проект с VS2005 на VS2015. При этом мой проект теперь отказывается использовать внешний вид системы и использует внешний вид Windows 98. Когда построен в 2005 году, он использует внешний вид системы.
.rc
Файл, описывающий диалоги, идентичен, так как я скопировал и вставил оригинальный. Свойства все одинаковы.
Я искал вокруг, и одна возможность — это свойство FlatStyle, которое может быть установлено в system, однако ни один из моих диалогов не имеет этого свойства.
Кроме того, я просмотрел этот и попробовал предложения, но ни один, кажется, не работает.
Я считаю, что эта проблема должна быть отключена в 2015 году, чтобы приложение адаптировалось к внешнему виду системы.
Так как мне сделать так, чтобы мое приложение адаптировалось к текущей системе?
Вот пример диалога:
STYLE DS_SETFONT | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW
Чтобы ваше приложение могло использовать визуальные стили, вам нужно указать, что вы хотите использовать ComCtl32.dll
версия 6 или более поздняя, через файл манифеста. Windows поставляется с несколькими версиями этого файла, поэтому вам нужно указать, что вы хотите более новую версию.
Обратите внимание, что, как упоминалось в комментариях @Mgetz, для более новой библиотеки dll требуется Unicode для правильной работы, поэтому убедитесь, что набор символов установлен на Unicode
в общих свойствах проекта.
Вы можете сгенерировать файл самостоятельно или позволить Visual Studio сгенерировать его автоматически в соответствии с зависимостями проекта и директивами компоновщика в исходном коде.
Таким образом, самый простой способ — позволить компоновщику генерировать его. открыто Linker
свойства для проекта, выберите Manifest
страницы, и убедитесь, что Generate Manifest
установлен в Yes
, Затем поместите следующую директиву в ваш исходный код:
// broken into several lines for readability, as usual make sure there
// are no backspaces after trailing backslashes if copy/pasting
#pragma comment(linker, "\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Кроме того, вы можете создать файл манифеста вручную. Согласно Включение визуальных стилей статья должна выглядеть так ( <dependency>
атрибут является релевантным):
<?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
type="win32"name="Microsoft.Windows.Common-Controls"version="6.0.0.0"processorArchitecture="*"publicKeyToken="6595b64144ccf1df"language="*"/>
</dependentAssembly>
</dependency>
</assembly>
Других решений пока нет …