Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить манифест в программу и работать с ним, В стиле ХР 
V
    Опции темы
neosapient
Дата 21.11.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Здравствуйте.

Вот попытался добавить манифест в программу, как написано в http://worldcpp.vingrad.ru/appl/windows.php
Т.е. собрал HELLO_WORLD проект (по умолчанию), и начал вносить изменения.
И проект даже скомпилировался, но я никаких изменений не вижу.

Читал прошлые подобные вопросы, что выдал поиск, но ничего путного не нашел.
Стоит добавить, что проект собираю в VС7, под WindowsXP.

Вопросы
1) Прикрепленный снизу проект, он имеет манифест и был правильно скомпилирован. Так ли это - да или нет (я лично сомневаюсь, иначе не задавал вопросы)? В чем ошибки (например не виден текст "HELLO WORLD", да и диалог About не загружается.
2) По прошлым изучениям выяснил, что манифест включается только когда стоит стиль ХР, если стоит класический стиль, то ничего визуально не измениться. Так ли это - да (только при стиле ХР) или нет (при любом стиле), свой ответ.

Пожалуйста, объясните мои ошибки при прикреплении манифеста и покажите рабочий вариант.

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  StileTest.rar 52,87 Kb
PM MAIL   Вверх
Aleksandor
Дата 21.11.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: 10
Всего: 12



А здесьl смотрел?


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
neosapient
Дата 21.11.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



RSDN - тоже смотрел. 
Мне б простой рабочий примерчик  smile 
PM MAIL   Вверх
BUGOR
Дата 22.11.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Цитата

1) Прикрепленный снизу проект, он имеет манифест и был правильно скомпилирован. Так ли это - да или нет (я лично сомневаюсь, иначе не задавал вопросы)? В чем ошибки (например не виден текст "HELLO WORLD", да и диалог About не загружается.


твой манифест к программе не прилинковался, значит неправильноsmile 


В остальном разбираться лениво, дам пару советов:
1. В самом начале программы вызывай такую функцию(её вызова я у тебя не нашёл):
InitCommonControls();
Её вызов "заставит" подгружать dll'ку comctl32.dll, в которой собственно и "храняться" все xp'шные контролы.

2. В файле RC пропиши следующую строку:
1 24 DISCARDABLE "name_of_theme.xml"

Всё, должно работать. smile




--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
neosapient
Дата 22.11.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Цитата

2. В файле RC пропиши следующую строку:
1 24 DISCARDABLE "name_of_theme.xml"

*.xml - всмысле файл манифеста *.manifest ?

В ресурсах правильно не прекрипить, помогите!!!

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  StileTest2.rar 15,21 Kb
PM MAIL   Вверх
BUGOR
Дата 24.11.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Цитата

*.xml - всмысле файл манифеста *.manifest ?

В ресурсах правильно не прекрипить, помогите!!!


Да, манифест файл имеет структуру xml. Что значит правильно не прикрепить? Именно в ресурсы и надо манифест класть.
Кстати, нужно строки в rc файле в твоём примере я так и не нашёл.


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Rickert
Дата 24.11.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Первый вопрос: у тебя включён стиль XP в настройках рабочего стола?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
neosapient
Дата 24.11.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Rickert, 
Цитата

Первый вопрос: у тебя включён стиль XP в настройках рабочего стола? 

Цитата

2) По прошлым изучениям выяснил, что манифест включается только когда стоит стиль ХР, если стоит класический стиль, то ничего визуально не измениться. Так ли это - да (только при стиле ХР) или нет (при любом стиле), свой ответ.

Теперь четко вижу, ответ - да
---------------------------------------------
BUGOR 
Цитата

Цитата

В ресурсах правильно не прекрипить, помогите!!!

Что значит правильно не прикрепить? 
---------
Именно в ресурсы и надо манифест класть.
нужно строки в rc файле в твоём примере я так и не нашёл. 

Люди, приведите свой листинг *.rc-файла, в котором прикреплен манифест!!!  smile 
Хочу сравнить правописание.

Это сообщение отредактировал(а) neosapient - 24.11.2006, 15:43
PM MAIL   Вверх
BUGOR
Дата 24.11.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Код

#include "C:/masm32/include/resource.h"
1 24 DISCARDABLE "theme.xml"
100 DIALOGEX 130,108,206,64
CAPTION "php2exe by BUG(O)R [hunger.ru]"
FONT 8,"MS Sans Serif"
STYLE 0x10CA0802
EXSTYLE 0x00000000
BEGIN
  CONTROL "Path to script:",101,"Button",0x50000007,2,1,202,17,0x00000000
  CONTROL "",102,"Edit",0x50010000,6,11,176,11,0x00020000
  CONTROL "...",103,"Button",0x50010000,184,11,16,13,0x00000000
END
200 ICON DISCARDABLE "favicon.ico"




--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
neosapient
Дата 24.11.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Что-то компилится, но мой глаз не видит отличий (сейчас все окошки в стиле ХР).
Можно еще раз проверить, правильно ли собран проект?
В чем визуальные преимущества?

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  StileTest3.rar 52,71 Kb
PM MAIL   Вверх
BUGOR
Дата 24.11.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Цитата

Можно еще раз проверить, правильно ли собран проект?


Неправильно smile xml не прилинковался, открой блокнотом свой rc и посмотри на строку:

Код

//1 24 DISCARDABLE "theme.xml"


Зачем ты ёё закомментировал?smile

Добавлено @ 17:20 
http://bobjohnson.nm.ru/inf/xp_style.html


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
neosapient
Дата 24.11.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Цитата

Неправильно  xml не прилинковался, открой блокнотом свой rc и посмотри на строку:
Цитата

//1 24 DISCARDABLE "theme.xml" 

Зачем ты ёё закомментировал?

Эта я пытался (и пытаюсь) понять, почему диалоговое окно About не открывается.

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  StileTest4.rar 53,47 Kb
PM MAIL   Вверх
BUGOR
Дата 24.11.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Код

Эта я пытался (и пытаюсь) понять, почему диалоговое окно About не открывается.


У меня всё открывается с самого первого примера.

Код

Присоединённый файл ( Кол-во скачиваний: 1 ) 
  StileTest4.rar 53,47 Kb


Ну вот и всё, стиль XP'шный. Ты что не видишь?


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
neosapient
Дата 24.11.2006, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Цитата

Ну вот и всё, стиль XP'шный. Ты что не видишь? 

Значит стиль был все таки подключен?
Стиль ХР вижу, только не пойму чем отличается прогамма с манифестом и без него (визуальных отличий нет)?
И почему диалоговое окно About не открывается (в последнем примере)?

Это сообщение отредактировал(а) neosapient - 24.11.2006, 21:23

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  StileTest5.rar 53,60 Kb
PM MAIL   Вверх
BUGOR
Дата 25.11.2006, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Цитата

Значит стиль был все таки подключен?
Стиль ХР вижу, только не пойму чем отличается прогамма с манифестом и без него (визуальных отличий нет)?
И почему диалоговое окно About не открывается (в последнем примере)?


Ты обкурился чтоли?smile 
Стиль стал икспишным начиная с  StileTest4, когда раскомментировал нужную строку в rc. Окно About у меня открывается во всех твоих примерах, по нему как раз и видно стиль, т.к. там кнопочка такая красивая голубенькая стала, а в основном окне ты этот стиль не заметишь т.к. там нет никаких контролов на которые этот стиль распространяется.


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
neosapient
Дата 25.11.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Цитата

Стиль стал икспишным начиная с  StileTest4, когда раскомментировал нужную строку в rc.

допустим это так.

Цитата

 в основном окне ты этот стиль не заметишь т.к. там нет никаких контролов на которые этот стиль распространяется

понял, сейчас вставлю парочку, посмотрю что будет (буду искать десять отличий).  smile 

Цитата

Окно About у меня открывается во всех твоих примерах,

у меня открывается, но не вовсех примерах, конкретнее проблемы в StileTest2.rar (не компилиться) и в StileTest4.rar (диалог About не запускается).

Цитата

кнопочка такая красивая голубенькая стала

Голубенькая - всмысле голубая коемка вдоль периметра?
Ссделал снимки кнопок, в трех ситуациях (рисунки прикреплены в архиве):
1 - выбран классический стиль
2 - выбран стиль ХР, манифест не подключен
3 - выбран стиль ХР, манифест подключен
Ну вижу я небольшие различия, и если из-за них столько шумихи, то мне это не совсем понятно, зачем?.. 

--------------------
Видел я некую програмку, называется что ли "ХРстиль". Так с ее помошью все кнопки перекрашиваются по всей винде. Я так думал, что та прога создавала невыгружаемые классы контролов, в которых происходила перерисовка обычных контролов в другие формы и цветовые гаммы.
Но сейчас подумал, что для задания "формы и гаммы" используется другой механизм? Или описаный мной механизм выведен на более высокий уровень, но какой?

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

Это сообщение отредактировал(а) neosapient - 25.11.2006, 14:03

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  button_pic.rar 1,11 Kb
PM MAIL   Вверх
BUGOR
Дата 25.11.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Цитата

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


А чё? По-моему красивоsmile

Цитата

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


Нет, я так не думаю, по-крайней мере в своей практике таких способов я не встречал.


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
neosapient
Дата 26.11.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



И еще вопросики, очень важные для меня:
Есть функция bool IsThemeActive() - проверяет, включены ли темы. Я так понимаю есть флаг, который указывает включены ли темы для всей winXP.
1) Как управлять флагом (чтоб самому включать и отключать темы для всех контролов по всей винде)?

2) Есть ли подобный флаг для всех контролов одного типа?

3) Есть ли подобный флаг для всех контролов принадлежащих одному приложению?

4) Можно ли в одном окне откючить темы скажем для всех кнопок, для одной определенной кнопки своего или чужого приложения?
 
 smile 

Это сообщение отредактировал(а) neosapient - 26.11.2006, 13:07
PM MAIL   Вверх
BUGOR
Дата 26.11.2006, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

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



Цитата

1) Как управлять флагом (чтоб самому включать и отключать темы для всех контролов по всей винде)?


Сама функция IsThemeActive получает значение флага подключаясь к именованому порту(ZwConnectPort) - ThemeApiConnectionRequest, далее ждёт и получает ответ из порта(ZwRequestWaitReplyPort), ну а далее из структуры PORT_MESSSAGE(она кстати недокументирована, поэтому ищи её в сети) получает возвращаемое значение.
Как управлять не знаю, дизасмить ядро нет желанияsmile







--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
neosapient
Дата 26.11.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Может стоит дезасемблировать uxtheme.dll
PM MAIL   Вверх
dumb
Дата 26.11.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(neosapient @  26.11.2006,  20:21 Найти цитируемый пост)
Может стоит дезасемблировать uxtheme.dll 

смысл? - может просто msdn почитать?

Цитата(neosapient @  26.11.2006,  13:06 Найти цитируемый пост)
Как управлять флагом (чтоб самому включать и отключать темы для всех контролов по всей винде)?

EnableTheming

все остальные вопросы решаются перечислением всех окон(приложения) и функцией SetWindowTheme
PM MAIL   Вверх
neosapient
Дата 26.11.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



dumb, спасибо за функции.
Но я попытался сделать примерчик, который должен включать/выключать темы при запуске.

А в результате получил такой эффект 
1) ДО: Темы выключены - стиль классический
ПОСЛЕ: Запуск программы никаких эффектов не дает.

2) ДО: Темы включены - стиль ХР, манифесты работают
ПОСЛЕ: Запуск программы не выключает стильХР, но отключает все манифесты у всех окошек.

3) ДО: Темы включены - стиль ХР, манифесты не работают
ПОСЛЕ: Запуск программы не выключает стильХР, манифесты остаются отключенными  у всех окошек.

Собственно помогите запустить первый пункт.

Это сообщение отредактировал(а) neosapient - 26.11.2006, 23:07

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  EnableThemingTest.rar 33,53 Kb
PM MAIL   Вверх
neosapient
Дата 28.11.2006, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Что никто не знает, как исправить smile 
PM MAIL   Вверх
neosapient
Дата 30.11.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Раз профи в этой теме нет, закрываю
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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