![]() |
|
![]() ![]() ![]() |
|
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
Программа не поддерживает темы Windows XP.
Проблема в том, что у вас либо не "прикреплен" файл манифеста, либо он игнорируется из-за настроек юникода в проекте (касается VS2005). Как прилинковать манифест Манифест действительно нужен для поддержки XP стиля стандартными контролами(если XP стиль включен в системе). Скажу больше, его можно спокойно прилинковать к прочим ресурсам программы, для этого достаточно в файл ресурсов добавить такую строку:
А в программе перед созданием диалога не забыть вызвать:
Хотя это не всегда нужно, но чтобы уж наверняка... Добавлено @ 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 |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |