Как заставить мое приложение использовать тему Windows? - PullRequest
3 голосов
/ 07 октября 2010

Я работаю с Windows API для создания небольшого приложения. Я уже создал кнопки, окна, хорошо.

Но проблема в том, что созданные мной компоненты не похожи на тему ОС. Они выглядят очень просто:

As you can see on image

См. Кнопку в качестве примера.

Как включить тему Windows? Это может быть в C или Delphi.

Ответы [ 5 ]

6 голосов
/ 07 октября 2010

Для приложения, использующего элементы управления Windows, которое задокументировано в этой статье MSDN

Редактировать: для краткого изложения Windows необходимо знать для приложения, предназначено ли оноиспользовать новые элементы управления стилем.Некоторые старые приложения просто не совместимы с новыми скинами в XP и более поздних версиях.Поэтому каждый исполняемый файл должен заявить, с какой версией он совместим в манифесте, встроенный XML-файл в исполняемом файле.Манифест используется для других целей, таких как объявление о том, что вы есть или с чем не совместимы (версии DLL, 120 dpi), а также без регистрации com.

3 голосов
/ 09 октября 2010
  1. Зависит от того, какая версия Delphi вы используете IIRC pre-Delphi 6 you необходимо добавить необходимый манифест рука. D7 и позже имеет компонент которые нужно поместить в форму для добавить поддержку темы (он просто добавляет манифест), до D2007 IIRC добавлена ​​простая проверка в проекте опции.
  2. Более ранняя версия Delphi не будет отображать тематический дизайн. Вы увидите темы только во время выполнения.
  3. Не все элементы управления могут поддерживать темы. Темы требуют вызова надлежащего API отрисовки, если элемент управления не соответствует, он не будет тематическим. Хорошим примером является стандартная сетка, она не прорисована до последней версии.
1 голос
/ 09 октября 2010

Если вы используете Delphi 2007 или более позднюю версию, необходимо проверить «Проект»> «Настройки»> «Приложение»> «Использовать темы Windows».

(эта опция должна автоматически проверяться для новых приложений).

0 голосов
/ 16 апреля 2015

Если ваше исполняемое имя - YourAppName.exe, создайте файл манифеста с именем YourAppName.exe.manifest в том же каталоге, где находится исполняемое приложение.

YourAppName.exe.manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
  xmlns="urn:schemas-microsoft-com:asm.v1"
  manifestVersion="1.0">
<assemblyIdentity
    name="YourAppName"
    processorArchitecture="*"
    version="1.0.0.0"
    type="win32"/>
<description>MyApp</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

Для встраивания файла манифеста в исполняемый файл используйте синтаксис командной строки mt.exe:

mt.exe –manifest YourAppName.exe.manifest -outputresource:YourAppName.exe;1
0 голосов
/ 10 октября 2010

В Справочник по визуальным стилям: Функции в MSDN, я обнаружил интересные функции, то есть SetWindowTheme () .Его можно использовать для применения или удаления визуального стиля в / из элемента управления / окна. Для включения визуального стиля в приложении необходимо выполнить несколько шагов .

Для использованияWindows Theme api, вам понадобится JwaUxTheme единица JEDI API Library.

Однако применение темы из файлов Windows Theme (.theme) к приложению, кажется, должно быть сделано путем отключения визуального стиля изконтролирует и записывает нарисованные владельцем элементы управления на основе информации из .theme файлов.В MSDN есть документация по спецификации файла .theme (см. Первую ссылку ниже).

Несколько полезных ссылок:

IsWindows Presentation Foundation (WPF) Темы плохие?Вот пример кода, как его загрузить здесь .

Если вы используете VCL, Theme Engine и Skin Engine имеет полную поддержкутемы для Windows XP.

Если приложение красоты является вашим приоритетом (без поддержки тем Windows), я думаю, BusinessSkinForm и DynamicSkinForm - лучший выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...