Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа не поддерживает темы Windows XP. Для чего нужен манифест в программе. 
:(
    Опции темы
zkv
Дата 18.9.2007, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Программа не поддерживает темы Windows XP.

Проблема в том, что у вас либо не "прикреплен" файл манифеста, либо он игнорируется из-за настроек юникода в проекте (касается VS2005).


Как прилинковать манифест

Манифест действительно нужен для поддержки XP стиля стандартными контролами(если XP стиль включен в системе). Скажу больше, его можно спокойно прилинковать к прочим ресурсам программы, для этого достаточно в файл ресурсов добавить такую строку:

Код

1 24 DISCARDABLE "your_manifest_file.xml"


А в программе перед созданием диалога не забыть вызвать:

Код

InitCommonControls();


Хотя это не всегда нужно, но чтобы уж наверняка...

Добавлено @ 14:34 
http://bobjohnson.nm.ru/inf/xp_style.html
Автор: W4FhLF Источник: 
Vingrad


Манифест и юникод

Насчёт визуальных стилей. Официально commctl32.dll версий 6 (ну и выше - когда будут) анси-версии своих функций не поддерживает. Точнее не обязана поддерживать. Как пишет МС - в текущих виндах commctl32.dll (шестой версии, т. е. та, что в WinSxS, в system32 - 5-ой) анси-версии поддерживает. Но сие гарантировать МС не собирается. То есть любой win-fix, любой апдейт теоретически может заменить вашу commctl32.dll на чисто юникодную версию. Отсюда соответствующие директивы в недрах CRT.

То есть все новые приложения должны юзать юникод-версии ВинАПИ функций. Иначе работоспособность полученных приожений в новых версиях винды МС не гарантируется (то есть просто в один прекрасный день при запуске приложения увидим, что точка входа для какой-нибудь анси-функции вин-апи не найдена).

Автор: Любитель Источник: Vingrad


Для чего нужен манифест в программе.

Не совем верно думать, что поддержка XP стилей - цель манифеста, хотя для большинства он больше нихачем и не нужен. Вообще в XP появилась очередная попытка борьбы с DLL Hell. Она заключается в появлении папки WinSxS. В ней находятся папки различных библиотек, название папочек включают архитектуру системы (x86, x64), название (MS рекомендует всобачивать сюды имя фирмы или девелопера), версию и хеш-код сертификата безопасности библиотеки. Для загрузки библиотек из этой папочки используются манифесты. При этом функции DLL обычным образом также пишутся в таблицу экспорта - то есть не на XP (или на XP при отсутствии манифеста) произойдёт загрузка этих DLL обычным способом. XP (и >) будет загружать либы из WinSxS с проверкой компатибилити версий. В манифесте указывается какая версия нам нужна. Если такой нет, но есть обратносовместимая с ней - то будет загружена она.

comctl32.dll 5-ой версии есть в System32. Это либа содержит функции работы (в том числе отрисовки) с основными контролами (как принято называть элементы у правления в винде). 5-ая версия не поддерживает XP-стили. 6-ая версия грузится через манифесты.

Приоритет всегда у файл-манифеста - типа my_program.exe.manifest в папке с программой. Но можно засунуть и в ресурсы.
Автор: Любитель Источник: Vingrad

Лоадер экзешников в XP и >, если есть либа в манифесте, он грузит её по технологии манифестов. PATH не при чём. Проверяется:

1. %WinDir%\WinSxS\manifests\<архитектура>_<имя_либы>_<hash-ключ>.manifest. И в той же папочки *.cat файл (сертификат безопасности). Хеш-ключ берётся по данным этого сертификата (конкретный алгоритм не знаю). Если сей манифест находится, то длл-ки берутся из папочки %WinDir%\WinSxS\<имя_манифеста_(см._выше)>

Если там ничего не находится, то далее идут прайват-сборки:

2. <app_dir>\<library_name>.manifest => длл-ки берутся из папки с экзехой. Если и здесь неудача, то:
3. <app_dir>\<library_name>\<library_name>.manifest => из <app_dir>\<library_name>

Автор: Любитель Источник: Vingrad


Сссылки по теме

Bootstrapper for the VC++ 2005 Redists (with MSI 3.1)

Redistributing visual c++ files
Potential run-time errors
Первая строка

Еще по теме манифестов
Visual C++ Libraries as Shared Syde By Side Assemblies
Assembly searching sequence

Автор: dizzy1984 Источник: Vingrad

Это сообщение отредактировал(а) zkv - 23.9.2007, 02:22
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1071 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.