C++ Builder 6 предшествует XP и Visual Styles, поэтому его VCL не имеет встроенной поддержки для тематики/стилизации вообще (есть сторонние компоненты для пользовательского скиннинга). Вот почему ваш пользовательский интерфейс выглядит «старым».
Многие из родных компонентов VCL основаны на стандартных элементах управления Win32, которые поддерживают визуальные стили, если ComCtrl v6 manifest is added to your application. Тем не менее, несколько компонентов VCL демонстрируют проблемы во время выполнения при стилизации, поскольку они не были разработаны для правильного управления стилем.
К счастью, вы можете установить SoftGems XP Theme Manager для решения этих проблем (код SoftGems был интегрирован непосредственно в VCL в более поздней версии C++ Builder).
Компонент SoftGems «TThemeManager
» динамически подключается к различным компонентам VCL во время выполнения (а также позволяет определять пользовательские элементы управления для пользовательских элементов управления), чтобы исправить ошибки, связанные с стилем. Просто опустите его на свой MainForm и, возможно, настройте несколько свойств, чтобы контролировать, какой тип пользовательского интерфейса он перехватывает.
Компонент SoftGems TXPManifest
имеет встроенный ресурс манифеста ComCtrl v6 для включения визуальных стилей. Просто отбросьте его на MainForm, настроить нечего.
Однако включение визуальных стилей все, что TXPManifest
делает. Приложение может иметь только один манифест, и если вам нужно настроить манифест (например, для обработки UAC, определения флагов совместимости Windows и т. Д. - то, что сейчас нужно делать большинству современных приложений), не используйте TXPManifest
вообще , Вам нужно будет создать свой собственный манифест, скомпилированный в файл .res
, который будет связан с ресурсами вашего файла .exe
вашего приложения. Самый простой способ сделать это, чтобы определить явное содержание во внешнем файл, а затем скомпилировать его в .res
файл с помощью .rc
файла, например:
myapp.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
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<!-- other manifest elements as needed -->
</assembly>
mymanifest. гс:
#define APP_MANIFEST 1
#define RT_MANIFEST 24
APP_MANIFEST RT_MANIFEST "myapp.exe.manifest"
Если добавить файл .rc
в свой проект, файл будет скомпилирована и скомпонована в .exe
автоматически.В противном случае, вам придется вручную скомпилировать .rc
файл в .res
файл с помощью командной строки C++ Builder brcc32 tool, а затем вы можете добавить полученный .res
файл к вашему проекту:
brcc32 mymanifest.rc
В противном случае, забудьте все это и просто использовать компонент люксы третьей заинтересованности, которые обеспечивают расширенные интерфейсы и функциональные возможности, такие как TMS, DevExpress, Raize и т.д.
_ «Как я могу изменить его?» _ Получить более современный компилятор, как VS2015. –
@ πάνταῥεῖ Это может быть необязательно, есть способ сделать это, связанный с файлами манифеста. (Даже программы, скомпилированные с MSVC 2010, имеют старый вид) – immibis
См., Если какой-либо из шагов в https://msdn.microsoft.com/en-us/library/windows/desktop/bb773175(v=vs.85).aspx может обратиться к вам. (Возможно, вам понадобится создать файл .rc) – immibis