![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Здравствуйте.
Вот попытался добавить манифест в программу, как написано в http://worldcpp.vingrad.ru/appl/windows.php Т.е. собрал HELLO_WORLD проект (по умолчанию), и начал вносить изменения. И проект даже скомпилировался, но я никаких изменений не вижу. Читал прошлые подобные вопросы, что выдал поиск, но ничего путного не нашел. Стоит добавить, что проект собираю в VС7, под WindowsXP. Вопросы 1) Прикрепленный снизу проект, он имеет манифест и был правильно скомпилирован. Так ли это - да или нет (я лично сомневаюсь, иначе не задавал вопросы)? В чем ошибки (например не виден текст "HELLO WORLD", да и диалог About не загружается. 2) По прошлым изучениям выяснил, что манифест включается только когда стоит стиль ХР, если стоит класический стиль, то ничего визуально не измениться. Так ли это - да (только при стиле ХР) или нет (при любом стиле), свой ответ. Пожалуйста, объясните мои ошибки при прикреплении манифеста и покажите рабочий вариант. Присоединённый файл ( Кол-во скачиваний: 16 ) ![]() |
|||
|
||||
Aleksandor |
|
|||
![]() Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 10 Всего: 12 |
А здесьl смотрел?
-------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
RSDN - тоже смотрел.
Мне б простой рабочий примерчик ![]() |
|||
|
||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
твой манифест к программе не прилинковался, значит неправильно ![]() В остальном разбираться лениво, дам пару советов: 1. В самом начале программы вызывай такую функцию(её вызова я у тебя не нашёл): InitCommonControls(); Её вызов "заставит" подгружать dll'ку comctl32.dll, в которой собственно и "храняться" все xp'шные контролы. 2. В файле RC пропиши следующую строку: 1 24 DISCARDABLE "name_of_theme.xml" Всё, должно работать. ![]() |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
*.xml - всмысле файл манифеста *.manifest ? В ресурсах правильно не прекрипить, помогите!!! Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() |
|||
|
||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
Да, манифест файл имеет структуру xml. Что значит правильно не прикрепить? Именно в ресурсы и надо манифест класть. Кстати, нужно строки в rc файле в твоём примере я так и не нашёл. |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Первый вопрос: у тебя включён стиль XP в настройках рабочего стола?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
neosapient |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Rickert,
Теперь четко вижу, ответ - да --------------------------------------------- BUGOR
Люди, приведите свой листинг *.rc-файла, в котором прикреплен манифест!!! ![]() Хочу сравнить правописание. Это сообщение отредактировал(а) neosapient - 24.11.2006, 15:43 |
||||||||
|
|||||||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
|
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Что-то компилится, но мой глаз не видит отличий (сейчас все окошки в стиле ХР).
Можно еще раз проверить, правильно ли собран проект? В чем визуальные преимущества? Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() |
|||
|
||||
BUGOR |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
Неправильно ![]()
Зачем ты ёё закомментировал? ![]() Добавлено @ 17:20 http://bobjohnson.nm.ru/inf/xp_style.html |
||||
|
|||||
neosapient |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Эта я пытался (и пытаюсь) понять, почему диалоговое окно About не открывается. Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() |
||||
|
|||||
BUGOR |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
У меня всё открывается с самого первого примера.
Ну вот и всё, стиль XP'шный. Ты что не видишь? |
||||
|
|||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Значит стиль был все таки подключен? Стиль ХР вижу, только не пойму чем отличается прогамма с манифестом и без него (визуальных отличий нет)? И почему диалоговое окно About не открывается (в последнем примере)? Это сообщение отредактировал(а) neosapient - 24.11.2006, 21:23 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
Ты обкурился чтоли? ![]() Стиль стал икспишным начиная с StileTest4, когда раскомментировал нужную строку в rc. Окно About у меня открывается во всех твоих примерах, по нему как раз и видно стиль, т.к. там кнопочка такая красивая голубенькая стала, а в основном окне ты этот стиль не заметишь т.к. там нет никаких контролов на которые этот стиль распространяется. |
|||
|
||||
neosapient |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
допустим это так.
понял, сейчас вставлю парочку, посмотрю что будет (буду искать десять отличий). ![]()
у меня открывается, но не вовсех примерах, конкретнее проблемы в StileTest2.rar (не компилиться) и в StileTest4.rar (диалог About не запускается).
Голубенькая - всмысле голубая коемка вдоль периметра? Ссделал снимки кнопок, в трех ситуациях (рисунки прикреплены в архиве): 1 - выбран классический стиль 2 - выбран стиль ХР, манифест не подключен 3 - выбран стиль ХР, манифест подключен Ну вижу я небольшие различия, и если из-за них столько шумихи, то мне это не совсем понятно, зачем?.. -------------------- Видел я некую програмку, называется что ли "ХРстиль". Так с ее помошью все кнопки перекрашиваются по всей винде. Я так думал, что та прога создавала невыгружаемые классы контролов, в которых происходила перерисовка обычных контролов в другие формы и цветовые гаммы. Но сейчас подумал, что для задания "формы и гаммы" используется другой механизм? Или описаный мной механизм выведен на более высокий уровень, но какой? Если слегка упростить вопрос, то можно ли без использования такого приема как субклассинг, на основе манифестов задействовать механизм, который даст мне еще один вид кнопки, отличный от тех трех. Это сообщение отредактировал(а) neosapient - 25.11.2006, 14:03 Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
||||||||
|
|||||||||
BUGOR |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
А чё? По-моему красиво ![]()
Нет, я так не думаю, по-крайней мере в своей практике таких способов я не встречал. |
||||
|
|||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
И еще вопросики, очень важные для меня:
Есть функция bool IsThemeActive() - проверяет, включены ли темы. Я так понимаю есть флаг, который указывает включены ли темы для всей winXP. 1) Как управлять флагом (чтоб самому включать и отключать темы для всех контролов по всей винде)? 2) Есть ли подобный флаг для всех контролов одного типа? 3) Есть ли подобный флаг для всех контролов принадлежащих одному приложению? 4) Можно ли в одном окне откючить темы скажем для всех кнопок, для одной определенной кнопки своего или чужого приложения? ![]() Это сообщение отредактировал(а) neosapient - 26.11.2006, 13:07 |
|||
|
||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
Сама функция IsThemeActive получает значение флага подключаясь к именованому порту(ZwConnectPort) - ThemeApiConnectionRequest, далее ждёт и получает ответ из порта(ZwRequestWaitReplyPort), ну а далее из структуры PORT_MESSSAGE(она кстати недокументирована, поэтому ищи её в сети) получает возвращаемое значение. Как управлять не знаю, дизасмить ядро нет желания ![]() |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Может стоит дезасемблировать uxtheme.dll
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
смысл? - может просто msdn почитать?
EnableTheming все остальные вопросы решаются перечислением всех окон(приложения) и функцией SetWindowTheme |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
dumb, спасибо за функции.
Но я попытался сделать примерчик, который должен включать/выключать темы при запуске. А в результате получил такой эффект 1) ДО: Темы выключены - стиль классический ПОСЛЕ: Запуск программы никаких эффектов не дает. 2) ДО: Темы включены - стиль ХР, манифесты работают ПОСЛЕ: Запуск программы не выключает стильХР, но отключает все манифесты у всех окошек. 3) ДО: Темы включены - стиль ХР, манифесты не работают ПОСЛЕ: Запуск программы не выключает стильХР, манифесты остаются отключенными у всех окошек. Собственно помогите запустить первый пункт. Это сообщение отредактировал(а) neosapient - 26.11.2006, 23:07 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Что никто не знает, как исправить
![]() |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Раз профи в этой теме нет, закрываю
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |