2016-08-03 4 views
-1

Я использую C++ Builder 6 и f.e. Кнопка или ProgressBar имеет очень старый вид, например, из Windows 95/98. : PC++ Builder 6 - как изменить очень старые виджеты на Windows?

Как его изменить? Я действительно хочу сделать их как в Windows.

Я имею в виду программу make в Builder, и эта программа покажет кнопку в Windows 7, как она (кнопка) выглядит в Windows 7, показывает ProgressBar в W10/W8, как это выглядит в W10/W8. Я хочу, чтобы это зависело от ОС.

Я новичок в C++, поэтому, пожалуйста ... сделайте это действительно простым, если это не слишком сложно.

+0

_ «Как я могу изменить его?» _ Получить более современный компилятор, как VS2015. –

+0

@ πάνταῥεῖ Это может быть необязательно, есть способ сделать это, связанный с файлами манифеста. (Даже программы, скомпилированные с MSVC 2010, имеют старый вид) – immibis

+0

См., Если какой-либо из шагов в https://msdn.microsoft.com/en-us/library/windows/desktop/bb773175(v=vs.85).aspx может обратиться к вам. (Возможно, вам понадобится создать файл .rc) – immibis

ответ

3

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 и т.д.

+0

Хорошо, спасибо, ребята, это работает! Но у меня есть еще один вопрос, он работает, когда im в Builder и когда im работает .exe в папке проекта, но когда я беру .exe в другое место (даже с rc и manifest), это не сработает. Что мне теперь делать? – Persantarus

+0

@Persantarus работает отлично (я делал это в течение многих лет). У вас есть ваш манифест, скомпилированный в ресурсы вашего .exe-файла с правильным идентификатором ресурса и типом ресурса? Похоже, вы этого не сделали или не сделали это правильно. –

+0

Парень сказал мне, что я должен сделать файл .res из этого .rc-файла, но когда я делаю это с помощью файла brcc32.exe, он не делает файл .res. Я не знаю, что я делаю неправильно. – Persantarus

Смежные вопросы