Кнопки с иконками и стилем Windows XP

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 14.06.2012 (Чт) 20:52

Собственно хотел поместить на форму наряду с обычными кнопками, кнопки с иконками.
Выставил свойства Style - 1-Graphical
У Picture - путь к *.bmp файлу
B получил облом, так как как оказалось такие кнопки не хотят отображаться с XP стилями
Получилась фигня типа этой
Кнопки.jpg
Так выглядят по соседству простая кнопа и с иконкой
Кнопки.jpg (4.28 Кб) Просмотров: 2401

Ну и собственно вопрос, как это лечить, если это вообще лечится?
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 14.06.2012 (Чт) 21:16

А ты где-то вообще видел в XP кнопки, отображающиеся как тебе надо (то есть с рисунком и стилем)?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 14.06.2012 (Чт) 21:27

Хакер писал(а):А ты где-то вообще видел в XP кнопки, отображающиеся как тебе надо (то есть с рисунком и стилем)?
Ты хочешь сказать что это взаимоисключающие вещи по определению? А насчет видел ли я такое? Я видел красивые стилизованные кнопки с иконками и не раз. Может это была имитация, не знаю, но выглядели они точно как кнопки.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 14.06.2012 (Чт) 21:28

Я ничего не хочу сказать. Я стараюсь быть предельно беспристрастным.
Видел — одно дело. Надо разбираться, как они этого добились.
Не видел — другое дело. Есть повод задуматься над тем, что такого не бывает.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 7:23

Вот сделал подборочку из того что нашлось непосредственно на моем компьютере
BUT3.jpg
BUT3.jpg (6.45 Кб) Просмотров: 2384
BUT4.jpg
BUT4.jpg (11.8 Кб) Просмотров: 2384
BUT1.jpg
BUT1.jpg (23.38 Кб) Просмотров: 2384
But6.jpg
But6.jpg (49.08 Кб) Просмотров: 2384
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 7:53

При попытке сделать что нибудь аналогичное в VB получается такая вот неприглядная картинка
Кнопки.jpg
Кнопки.jpg (7.08 Кб) Просмотров: 2382

Кроме того, что при добавлении иконки теряются стили XP, так еще и надпись нельзя настроить так, что-бы она была не снизу а справа от иконки как например на кнопках, которые я привел для примера постом выше. Конечно можно извратится и сделать рисунок надписи, т.е. что-бы и иконка и надпись были одним целым рисунком, но этот способ видится мне очень корявым.
Вообще на VB можно сделать нечто подобное, как на приведенных примерах?

Или только так
Пример.rar
(27.68 Кб) Скачиваний: 62
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Кнопки с иконками и стилем Windows XP

Сообщение jangle » 15.06.2012 (Пт) 12:31

ger_kar писал(а):Вообще на VB можно сделать нечто подобное, как на приведенных примерах?


Я делал, лет 5 назад. Но уже не помню как устанавливал стиль :) Потому как сейчас пользуюсь покупными контролами, где все это есть.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 12:46

jangle писал(а):Но уже не помню как устанавливал стиль Потому как сейчас пользуюсь покупными контролами, где все это есть.
И как покупные контролы, оправдывают вложенные в них средства? И насколько они дорогие если их покупать?
И опять же контролы наверное идут в виде *.ocx файлов, которые надо дополнительно устанавливать в систему.
Что еще можно найти полезного в таких контролах, кроме XP стиля?
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Кнопки с иконками и стилем Windows XP

Сообщение jangle » 15.06.2012 (Пт) 13:52

ger_kar писал(а):И как покупные контролы, оправдывают вложенные в них средства?


А как покупной автомобиль оправдывает вложенные в него средства?

И насколько они дорогие если их покупать?


Зависит от фирмы разработчика. Меня цена мало волнует, покупает организация по-моей заявке.

И опять же контролы наверное идут в виде *.ocx файлов, которые надо дополнительно устанавливать в систему.


Да в виде .ocх, в систему их устанавливает твой инсталлятор

Что еще можно найти полезного в таких контролах, кроме XP стиля?


Опять же смотря что покупаешь. К примеру, можно перевести весь свой интерфейс на XAML, что я сейчас делаю в одном проекте.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 14:12

jangle писал(а):А как покупной автомобиль оправдывает вложенные в него средства?
Когда как, может и не оправдать.
jangle писал(а):Меня цена мало волнует, покупает организация по-моей заявке.
Тебя то может и не волнует, это мне интересно.
jangle писал(а):К примеру, можно перевести весь свой интерфейс на XAML
Кто такой XAML не имею не малейшего понятия :oops: , надо про это прочитать.
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Кнопки с иконками и стилем Windows XP

Сообщение jangle » 15.06.2012 (Пт) 14:22

Когда как, может и не оправдать.


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

ger_kar писал(а):Тебя то может и не волнует, это мне интересно.


Вот к примеру Порядка 800$ за весь GUI фреймворк

Кто такой XAML не имею не малейшего понятия :oops: , надо про это прочитать.


Гипертекстовый язык разметки интерфейса. Позволяет творить чудеса с GUI

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 17:22

jangle писал(а):Я делал, лет 5 назад. Но уже не помню как устанавливал стиль
А ты не мог бы вспомнить, может где-то как-то образец какой завалялся :) . Кстати я попробовал контролы от MS Forms2, там есть свойство позволяющее выставить ориентацию иконки и текста, но стили XP с ними тоже отсутствуют.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 15.06.2012 (Пт) 17:43

Все скриншоты, которые ты привёл, не являются скришотами XP-программ. Так что не исключено, что кнопки в них являются вручную отрисовываемыми. Возьми Spy++ и разведай.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 18:01

Хакер писал(а):Все скриншоты, которые ты привёл, не являются скришотами XP-программ.
Как это не XP программ, я что-то не совсем понял. Вроде обычные приложения под Windows XP и запущенные тоже в Windows XP. Или имелось ввиду что-то другое?
Хакер писал(а):Возьми Spy++ и разведай.
Я это уже разведывал. Spy++ говорит что сие - есть кнопки.
Разведка Spy++.jpg
Разведка Spy++.jpg (66.04 Кб) Просмотров: 2342

Даже большие прямоугольники в центре, не говоря уже про боковые кнопки с левой стороны.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 15.06.2012 (Пт) 18:03

ger_kar писал(а):Как это не XP программ, я что-то не совсем понял. Вроде обычные приложения под Windows XP и запущенные тоже в Windows XP. Или имелось ввиду что-то другое?

Имелись в виду программы, входящие в состав XP, а не программы, написанные для Windows XP. Непонятно разве?

ger_kar писал(а):Я это уже разведывал. Spy++ говорит что сие - есть кнопки.

Ну а расшифровку стилей посмотреть?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 18:48

Хакер писал(а):Имелись в виду программы, входящие в состав XP, а не программы, написанные для Windows XP. Непонятно разве?
Теперь то уже конечно понятно ;)
А вот и стили
Style3.jpg
Style3.jpg (83.77 Кб) Просмотров: 2333
Style1.jpg
Style1.jpg (28.56 Кб) Просмотров: 2333
Style2.jpg
Style2.jpg (32.81 Кб) Просмотров: 2333

Правда мне это совершенно непонятно, как их можно использовать применительно к VB
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 15.06.2012 (Пт) 18:51

BS_OWNERDRAW. Точно, кнопка с ручной отрисовкой родителем.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 19:06

На VB можно такое повторить? Имеется ввиду использование стандартной кнопки, а не посредством вызова функций WinApi CreateWindowEx и обработки оконных сообщений. Приметить суперклассинг если такое возможно и скажем доработать недостающее?
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 15.06.2012 (Пт) 19:30

А почему должно быть нельзя?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 19:45

Твой ответ обнадежил, осталось прояснить в каком направлении двигаться, потому что я абсолютно не представляю, с чего начать.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 15.06.2012 (Пт) 20:29

В направлении поиска по BS_OWNERDRAW.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 15.06.2012 (Пт) 21:01

Нашел на форуме тему в которой этот вопрос уже изучался, буду пока изучать да ставить опыты.
Бороться и искать, найти и перепрятать

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Кнопки с иконками и стилем Windows XP

Сообщение bon818 » 21.06.2012 (Чт) 3:54

jangle писал(а):
Когда как, может и не оправдать.
Вот к примеру Порядка 800$ за весь GUI фреймворк


800$ ахереть :shock: в Microsoft Visual Studio 2010 чуть-ли не поумолчанию такой интерфейс генерит

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Кнопки с иконками и стилем Windows XP

Сообщение bon818 » 24.06.2012 (Вс) 2:19

Кнопки с иконками и стилем Windows XP самый простой способ со всеми минусами и плюсами
Вложения
codigo fuente+1.rar
Кнопки с иконками и стилем Windows XP самый простой способ со всеми минусами и плюсами
(167.91 Кб) Скачиваний: 81

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 24.06.2012 (Вс) 23:00

Спасибо, то что надо. И все оказалось намного проще, чем я думал.
Однако при изучении примера возникли кое-какие вопросы. Стиль XP реализован через вызов InitCommonControlsEx, и нет никакого манифеста. При этом все прекрасно работает. Получается, что можно вызывать InitCommonControlsEx, а манифест совсем можно исключить? Можно ли убрать манифест если вызывать вместо InitCommonControlsEx функцию InitCommonControls?
Идея самого примера заключается в том, что кнопка делается обычной, а поверх просто помещается контрол с изображением, в данном случае - это пользовательский контрол. А разве напрямую нельзя вместо UserControl'а использовать просто Picture? Зачем надо было городить весь этот огород, я честно нифига не догнал.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Кнопки с иконками и стилем Windows XP

Сообщение Хакер » 24.06.2012 (Вс) 23:03

ger_kar писал(а):Идея самого примера заключается в том, что кнопка делается обычной, а поверх просто помещается контрол с изображением, в данном случае - это пользовательский контрол. А разве напрямую нельзя вместо UserControl'а использовать просто Picture? Зачем надо было городить весь этот огород, я честно нифига не догнал.

Фу, нельзя так делать!!!
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Кнопки с иконками и стилем Windows XP

Сообщение bon818 » 24.06.2012 (Вс) 23:10

Реализуй без огорода как хочеш.. а вот манифест в ресурсе.
Последний раз редактировалось bon818 24.06.2012 (Вс) 23:26, всего редактировалось 2 раз(а).

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 24.06.2012 (Вс) 23:20

Хакер писал(а):Фу, нельзя так делать!!!
Что конкретно нельзя? Нельзя Picture без UserControl'а использовать? Или вообще нельзя помещать изображение поверх кнопки?
bon818 писал(а):Реализуй без огорода как хочеш..
Вопрос не в том, как я хочу, а вопрос в том как лучше. Я не понял замысла, но это не значит, что его не было. Поэтому хотелось бы разобраться в этом вопросе и постичь тайный смысл.

bon818 писал(а): а вот манифест в ресурсе
Ну и где там манифест? Я например исследовав файл ресурсов, нашел там только Bitmap'ы в количестве 5 штук, и более ничего.
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Кнопки с иконками и стилем Windows XP

Сообщение ger_kar » 24.06.2012 (Вс) 23:25

Без файла ресурсов, стилей XP нет. Странно. Получается манифест может быть в виде битмапов что-ли?
Бороться и искать, найти и перепрятать

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Кнопки с иконками и стилем Windows XP

Сообщение bon818 » 24.06.2012 (Вс) 23:28

Есть еще 101 способ реализации в том числе и без манифеста

Код: Выделить всё
Option Explicit

Private Type RECT2
    x1 As Long
    y1 As Long
    x2 As Long
    y2 As Long
End Type

'Theme =========================================================================
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT2) As Long
Private Declare Function DrawThemeBackGround Lib "uxtheme.dll" Alias "DrawThemeBackground" (ByVal hTheme As Long, ByVal lhdc As Long, ByVal iPartId As Long, ByVal iStateId As Long, pRect As RECT2, pClipRect As Any) As Long
Private Declare Function OpenThemeData Lib "uxtheme.dll" (ByVal hwnd As Long, ByVal pszClassList As Long) As Long
Private Declare Function CloseThemeData Lib "uxtheme.dll" (ByVal hTheme As Long) As Long

'Edit
'ComboBox
'Rebar
'Tab
'Toolbar
'AddressBand
'SearchBox

Private Sub SusTheme(wParam As Long)
    Dim hTheme  As Long, uRct     As RECT2
    GetClientRect wParam, uRct
    hTheme = OpenThemeData(0&, StrPtr("Rebar"))
    If (hTheme) Then
        Call DrawThemeBackGround(hTheme, Picture1.hDC, 6, 0&, uRct, ByVal 0&)
        Call CloseThemeData(hTheme)
    Else
       Call CloseThemeData(hTheme)
    End If
End Sub

Private Sub Form_Paint()
Call SusTheme(Picture1.hwnd)
End Sub



есть там манифест!

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 65

    TopList