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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить манифест в программу и работать с ним, В стиле ХР 
V
    Опции темы
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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1021 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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