Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кнопка с изображением в XP стиле - как? 
:(
    Опции темы
CaptainFlint
Дата 13.6.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



Как включать поддержку XP-стиля для всех основных элементов управления, я знаю - файл манифеста добавить (хоть в каталог программы, хоть в ресурсы). Но это не работает с кнопками, на которых рисуется картинка: как только выполняется вызов CButton::SetBitmap или CButton::SetIcon, кнопка из XP-шной сразу превращается в обычную. На RSDN я нашёл статейку по этому вопросу, но там абсолютно всё на Дельфи. Переносить весь тот громадный код на C++/MFC я запарюсь... В Интернете нашёл вроде бы готовый код (вот тут), но скачать можно только зарегистрированным пользователям, а зарегистрироваться не разрешает. smile

Может, кто знает, где можно найти нормальный готовый код для таких кнопочек?


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Coocky
Дата 13.6.2005, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Константин
Этот вопрос уже поднимался. Ответа на него так и не дал никто.
Однозначно скажу одно. У меня ХР, но с интерфейсом 2000( ну так мне нравится).
Так вот , мои проги у меня как 2000, но когда пишу людям на заказ, под ХР ,интерфейс моих прог как ХР(проверено).Аж непревычно....
Даже цвета Прогрессбара и чего еще меняются.
Немогу обьяснить конкретно, как это происходит smile

Это сообщение отредактировал(а) Coocky - 13.6.2005, 15:14


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
CaptainFlint
Дата 13.6.2005, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



Coocky
Это, скорее всего, манифест как раз и работает. Ясное дело, что стиль XP должен подключаться только если на компе, где запускается приложение, этот стиль доступен и включён, а в остальных случаях - классический вид. Файл манифеста именно так и работает, ни единой строчки кода для этого писать не надо. Пока не сделаешь контрол, который этим стилем не поддерживается... smile Как вот, например, кнопка с картинкой...

PS: Кстати, странно - я поиск же делал. Почему-то не нашлась тема, где это обсуждалось. Можешь ссылку дать?


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Coocky
Дата 13.6.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Константин
Цитата
PS: Кстати, странно - я поиск же делал. Почему-то не нашлась тема, где это обсуждалось. Можешь ссылку дать?

Это давно было..Я еще тогда "шустрым" был, как ты smile
Тему , наверное, удалили, т.к ничего конкретного небыло. Пустые разговоры.



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
CaptainFlint
Дата 16.6.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



И-эх, всё приходится самому делать. smile
Кому надо - ловите, в аттаче класс MFC для такой кнопочки (плюс маленький демо-проектик). Понемножку, надеюсь, буду исправлять недостатки и добавлять фичи.

Принцип работы такой кнопки: переопределяются некоторые обработчики сообщений, в частности, WM_PAINT, которые вызывают стандартные обработчики, а потом рисуют поверх нужную картинку. Метод, конечно, не ах, но вполне рабочий. На данный момент присутствуют следующие ограничения:
1. Картинка рисуется всегда только по центру кнопки.
2. Если картинка больше размеров кнопки, она рисуется поверх, вылезая за границы.
3. Кроме добавления рисунка, больше ничего не поддерживается (например, сделать кнопку с картинкой и текстом не получится).
Также не исключена возможность возникновения глюка, когда картинка просто исчезает, и остаётся пустая кнопка. После фикса найденных багов я на такое пока не натыкался, но кто знает, вдруг я не все нужные сообщения перехватываю...

Присоединённый файл ( Кол-во скачиваний: 24 )
Присоединённый файл  IconButtonXP.zip 24,26 Kb


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Coocky
Дата 17.6.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Константин
Ща скачаю.Но пока к дому донесу, можно вопрос-а как же ты добился? В пару слов...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
CaptainFlint
Дата 17.6.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



Coocky
Я ж написал: принцип работы - отрисовка рисунка прямо поверх изображения кнопки. smile Повнимательнее надо... smile


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Coocky
Дата 17.6.2005, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Константин
Жук, ты smile
Я думал ты какие то библы надыбал smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
CaptainFlint
Дата 17.6.2005, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



Цитата
И-эх, всё приходится самому делать.

Цитата(Coocky @ 17.6.2005, 21:18)
Я думал ты какие то библы надыбал

Невнимательны вы, товарищ Куки. smile И ваапче (эдаким заносчивым тоном): не нравится, не ешь! smile
Библы, кстати, пытался надыбать, но потерпел в этом полное фиаско. smile А кнопочки зело нужны... Вот и пришлось делать первое, что в голову пришло. (На самом деле, я уже такой метод использовал в одной из своих программ, только реализовал я его тогда весьма неудачно... Сейчас куда лучше и безглючнее получилось.)

Кстати, скоро на своём сайте прожку URLFileSize заапдейтю - там энти вот кнопочки будут использоваться. Можно будет заценить на реальном проекте, так сказать, а не на демо-программке. smile


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Coocky
Дата 17.6.2005, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Константин
А чем CBitmapbutton не устраивал? smile
Кода на две строки...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
CaptainFlint
Дата 17.6.2005, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



Цитата(Coocky @ 17.6.2005, 22:07)
А чем CBitmapbutton не устраивал?

Отсутствием поддержки XP-стиля.

Это сообщение отредактировал(а) Константин - 17.6.2005, 23:47


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Coocky
Дата 18.6.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



А ну да, ты ж писал..Ну спасибо... Держи плюс за старания.
Хотя для меня это не принципиально( вид кнопки), но ты ж старался smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
CaptainFlint
Дата 18.6.2005, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 7
Всего: 23



Цитата(Coocky @ 18.6.2005, 14:55)
Держи плюс за старания.
Хотя для меня это не принципиально( вид кнопки), но ты ж старался smile

Не плюсиков ради, но всеобщего блага для! smile
Просто мне XP-стиль нравится. А вот как выглядит диалог в этом стиле с кнопками типа CBitmapButton (см. аттач). Ну куда это годится? Уж лучше всё пусть будет в классическом стиле, чем такой кошмар.


Присоединённый файл ( Кол-во скачиваний: 40 )
Присоединённый файл  Pic.gif 5,29 Kb


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
ManiaK
Дата 19.6.2005, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

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



Константин ЦАРЬ! Наконец я понял, что ретуширование нужно не вручную лопатить... smile

Держи репей!
PM MAIL WWW   Вверх
Rickert
Дата 23.10.2006, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



У меня проблемы "слёта" стиля не встовало, потому что мне нужна была кнопка сразу с текстом и изображением, следовательно стандартное setIcon не подходило. ПРосто переопределил класс кнопки и в отрисовку, после отрисовки самой кнопки воткнул отрисовку поверх неё любого изображения, с указанием положения картинки и размеров.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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