VR
Virtual Reality On-line   Delphi
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Delphi.
Встраивание XP Visual Manifest в ваше приложение
:

Если ты программируешь на Делфи и юзаешь последние «Окошки», то должен был заметить одну неприятную вешь: В Windows XP программы, сделанные на Delphi не поддерживают визуальные стили. Обидно, но поправимо ?. Дело в том, что все переделанные елементы, которые отображаются в новом стиле, находятся в отдельной библиотеке ComCtl32.dll версии 6.0. (Если ты судорожно бросился искать этот файл, чтобы заменить им 5-ую версию в Windows 98, то остановись. ComCtl32.dll версии 6.0 работает только в Windows XP!)

Как же получается, что одни программы отображаются в новом стиле, а другие нет? Разработчики Windows XP для отображения приложений в старом стиле оставили версию 5.0, а для новых стилей добавили версию 6.0. Для того, чтобы новые программы корректно работали под предыдушими ОС в них по прежнему делается ссылка на старую версию библиотеки, а для новой ОС в ресурсах программы делается указатель на возможность поддержки новой версии библиотеки.

Вот наша задачка уже и прояснилась, необходимо просто напросто дополнительно запихнуть в программу этот ресурс и дело в шляпе.? Что же нам надо туда запихнуть?

А вот что (эдакий xml код):


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

Примечание:
Вместо ApplicationName укажите название программы
Вместо ApplicationDescription – описание программы

Для тех, кто не знает как помешаются ресурсы в программу - приведу пример.

1.Сохраните приведенный выше код в файл (например manifest.txt).

2.Создайте файл такого содержания: 1 24 [путь до файла]/manifest.txt и сохраните его в папку ../Program Files/Delphi/Bin/ с именем: resfile.rc

3.Запустите файл: ../Program Files/Delphi/Bin/brcc32.exe resfile.rc

4.В папке ../Program Files/Delphi/Bin/ появится файл с названием resfile.res – этот файл необходимо прописать в разделе implementation вашего приложения.

Вот так выглядела наша программа до встраивания манифеста:

Logo
А это она же, только после усовершенствования:

Logo

Сразу же оговорюсь! Колонки компонента TListView – это THeaderControl. Дело в том, что «родные» колонки компонента выдают ошибку при наведении на них курсора мыши. В чем причина этой ошибки я выяснить не смог, но замечу, что у меня Delphi6 PE. Как ведуд себя программы, сделанные в других версиях Delphi – я не знаю.

Автор статьи Константин Тарабрин aka Delphir [delphir@times.lv]


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©