Windows — обновление Visual Studio с 2005 по 2015, графический интерфейс C ++ сохраняет тему XP не системной

Я недавно перенес проект с 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

2

Решение

Чтобы ваше приложение могло использовать визуальные стили, вам нужно указать, что вы хотите использовать 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>
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]