Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

стиль окна

18K
24 ноября 2007 года
af1x
31 / / 19.11.2007
Как сделать, чтобы все элементы приложения (меню, кнопки и т.д.) имели стиль текущей темы windows??
1.9K
24 ноября 2007 года
max_dark
256 / / 11.11.2005
Необходимо подключить манифест в качестве ресурса
Пример во вложении
251
25 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Или например, если у нас текущая тема - стандартная классическая, а нам ОТДЕЛЬНО какое-то окно нужно стилизовать - то можно заюзать либрари XpThemes.tlb. У меня даж исходнег где-т завалялсо.
18K
25 ноября 2007 года
af1x
31 / / 19.11.2007
Цитата: max_dark
Необходимо подключить манифест в качестве ресурса
Пример во вложении



И как его подключить в Visual c++ studio 2005?:)

251
25 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Его подключать не надо, его достаточно скопировать в папку с программой и назвать так же, как и программа + .manifest. То есть:
program.exe.manifest
251
25 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Кстати, если вы хотите применить стилизирование ЛЮБЫХ окон в ЛЮБЫХ программах, то достаточно сделать то же самое. Есть, правда ондно НО: если в тех программах не вызвана апи-функция InitCommonControls, то при загрузке программа даст ошибку (тогда удалите этот файл).
342
28 ноября 2007 года
Yos
209 / / 21.06.2003
Начиная с ХР InitCommonControls вызывать необязательно...

Для Visual c++ studio 2005 необходимо в конфигурации проекта в поле Configuration Properties/Linker/Manifest File/Additional Manifest Dependencies вписать "type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"

Причем: 1. Компилить надо без "подключения" *80.dll иначе эти данные игнорируются... 2. В виде ресурса он некорректно подключается, если быть точнее - подключается но игнорируется...
246
28 ноября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: SkyM@n
Или например, если у нас текущая тема - стандартная классическая, а нам ОТДЕЛЬНО какое-то окно нужно стилизовать - то можно заюзать либрари XpThemes.tlb. У меня даж исходнег где-т завалялсо.


Подробнее можно?

251
28 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Мог бы приклеить пример на вижуал бейсике. И/или обьяснить, какие и зачем апишки юзать.
246
29 ноября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: SkyM@n
Мог бы приклеить пример на вижуал бейсике. И/или обьяснить, какие и зачем апишки юзать.


Вопрос вот в чем, у меня IE Toolbar на писан на C++Builder версии 5. Задать ему стиль ХР через манифест не получается (делаю как расписано в МСДН для плагинов) старый SDK видимо у 5-ки. Варианта два:
1. Править SDK (гиблое дело)
2. Нарисовать тулбар самому.
Взялся за пункт 2, все вроде ничего, но не могу добится "прозрачности".
Т.е. нужно нарисовать тулбар соответственно вкл/выкл схеме ХР. Тулбар должен быть транспарент, на нем есть едит-вох

342
29 ноября 2007 года
Yos
209 / / 21.06.2003
Цитата: GIZMO
Взялся за пункт 2, все вроде ничего, но не могу добится "прозрачности".
Т.е. нужно нарисовать тулбар соответственно вкл/выкл схеме ХР. Тулбар должен быть транспарент, на нем есть едит-вох



// создаем окно
hWindow = CreateWindowEx(WS_EX_LAYERED|...);
if( hWindow )
{
// устанвливаем прозрачность
SetLayeredWindowAttributes(hWindow,0,0...255,LWA_ALPHA);

return TRUE;
}

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

246
29 ноября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Yos
// создаем окно
hWindow = CreateWindowEx(WS_EX_LAYERED|...);
if( hWindow )
{
// устанвливаем прозрачность
SetLayeredWindowAttributes(hWindow,0,0...255,LWA_ALPHA);

return TRUE;
}


Мне не нужен полностью прозрачный тулбар.

Цитата: Yos

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


Версию Билдера сообщил - 5, там такое делать нельзя, только с VCL 6 и старше.

251
02 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Yos
Начиная с ХР InitCommonControls вызывать необязательно...


Откуда такая информация? Чем обосновываете?

ЗЫ. Как обещал, добавил исходник по сабжу.

28K
02 декабря 2007 года
SavOk
9 / / 05.10.2007
а вот расскажите, как во ВСЕХ окнах винды сменить тему оформления или стиль?
251
03 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: SavOk
а вот расскажите, как во ВСЕХ окнах винды сменить тему оформления или стиль?


Совет посмотреть предложенный исходник и почитать топик заново - там ответ на ваш вопрос. По исходнику вопросы можно задавать тут.

342
03 декабря 2007 года
Yos
209 / / 21.06.2003
Цитата: SkyM@n
Откуда такая информация? Чем обосновываете?



Чисто эксперементально определил... однажды... писал хитрый такой софтец по безопасности, и возникла необходимость подключить для удобства всякие стандартные весчи виндов чтобы свои не наворачивать, а так как были старые наработки то и навставлял их (там было использование InitCommonControls) а потом подключая новые, ранее неиспользуемые забыл напрочь прописать в начале - и оно работало :) удалил везде где было - все равно работает :). Попробовал на 2000 - неработает :( подключил - работает. Отключил, поставил SP4 - работает :)...

Вобщем после проведения типа лабораторной работы - мой собственный вывод - начиная с XP вызывать InitCommonControls необязательно... А может это просто глюк моих виндов... Тогда непонятно почему работает у остальных, кто пользуется данной моей прогой...

251
03 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Манифест можно прилинковвівать как встроенный ресурс #24 (.RES) либо отдельным файлом (AppName.exe.manifest.
Функция InitCommonControls проверяет, что общая динамическая связь управляющей библиотеки (DLL) загружена.
Но ее можно не использовать. Достаточно связи с comctl32.dll и использования хотя бы одного из компонент этой библиотеки. Все это нужно для инициализации данного стиля.
У тебя, Yos, была загружена эта либрари. Вот почему было все ок. Тут чудес не бывает.
InitCommonControls влияет на линкер, который связывает библиотеку comctl32 с объектником. Линкер игнорирует неиспользуемый импорт, если ф-ю не вызывать, и не импортирует библиотеку, т.к. к ней нет ни одного вызовова. Поэтому вызывая эту ф-ю мы обманываем линкер.
342
03 декабря 2007 года
Yos
209 / / 21.06.2003
У меня во всех проектах в настройках comctl32 прописана "поумолчанию", там вообщем куча всего прописано что бы в ответственный момент ошибки линкера не вылезло :), так что теперь понятно :)
251
03 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Yos
У меня во всех проектах в настройках comctl32 прописана "поумолчанию", там вообщем куча всего прописано что бы в ответственный момент ошибки линкера не вылезло :), так что теперь понятно :)


А вот это зря. Приходится либо отключать, либо постоянно компилировать проект с лишними библиотеками, что очень избыточно, но это вопрос уже другой темы.

342
03 декабря 2007 года
Yos
209 / / 21.06.2003
В VS98 действительно избыточно - выдает что есть библиотеки которые не используются, а в VS2005 они автоматически убираются.

А Так как тема совсем другая, то по данному вопросу все... и извиняюсь за оффтоп...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог