| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Кнопка с изображением в XP стиле - как? |
| Автор: CaptainFlint 13.6.2005, 14:11 |
| Как включать поддержку XP-стиля для всех основных элементов управления, я знаю - файл манифеста добавить (хоть в каталог программы, хоть в ресурсы). Но это не работает с кнопками, на которых рисуется картинка: как только выполняется вызов CButton::SetBitmap или CButton::SetIcon, кнопка из XP-шной сразу превращается в обычную. На RSDN я нашёл статейку по этому вопросу, но там абсолютно всё на Дельфи. Переносить весь тот громадный код на C++/MFC я запарюсь... В Интернете нашёл вроде бы готовый код (http://www.pablosoftwaresolutions.com/html/ciconbutton.html), но скачать можно только зарегистрированным пользователям, а зарегистрироваться не разрешает. Может, кто знает, где можно найти нормальный готовый код для таких кнопочек? |
| Автор: Coocky 13.6.2005, 15:13 |
| Константин Этот вопрос уже поднимался. Ответа на него так и не дал никто. Однозначно скажу одно. У меня ХР, но с интерфейсом 2000( ну так мне нравится). Так вот , мои проги у меня как 2000, но когда пишу людям на заказ, под ХР ,интерфейс моих прог как ХР(проверено).Аж непревычно.... Даже цвета Прогрессбара и чего еще меняются. Немогу обьяснить конкретно, как это происходит |
| Автор: CaptainFlint 13.6.2005, 15:18 |
| Coocky Это, скорее всего, манифест как раз и работает. Ясное дело, что стиль XP должен подключаться только если на компе, где запускается приложение, этот стиль доступен и включён, а в остальных случаях - классический вид. Файл манифеста именно так и работает, ни единой строчки кода для этого писать не надо. Пока не сделаешь контрол, который этим стилем не поддерживается... PS: Кстати, странно - я поиск же делал. Почему-то не нашлась тема, где это обсуждалось. Можешь ссылку дать? |
| Автор: Coocky 13.6.2005, 22:05 | ||
Константин
Это давно было..Я еще тогда "шустрым" был, как ты Тему , наверное, удалили, т.к ничего конкретного небыло. Пустые разговоры. |
| Автор: CaptainFlint 16.6.2005, 18:56 |
| И-эх, всё приходится самому делать. Кому надо - ловите, в аттаче класс MFC для такой кнопочки (плюс маленький демо-проектик). Понемножку, надеюсь, буду исправлять недостатки и добавлять фичи. Принцип работы такой кнопки: переопределяются некоторые обработчики сообщений, в частности, WM_PAINT, которые вызывают стандартные обработчики, а потом рисуют поверх нужную картинку. Метод, конечно, не ах, но вполне рабочий. На данный момент присутствуют следующие ограничения: 1. Картинка рисуется всегда только по центру кнопки. 2. Если картинка больше размеров кнопки, она рисуется поверх, вылезая за границы. 3. Кроме добавления рисунка, больше ничего не поддерживается (например, сделать кнопку с картинкой и текстом не получится). Также не исключена возможность возникновения глюка, когда картинка просто исчезает, и остаётся пустая кнопка. После фикса найденных багов я на такое пока не натыкался, но кто знает, вдруг я не все нужные сообщения перехватываю... |
| Автор: Coocky 17.6.2005, 16:18 |
| Константин Ща скачаю.Но пока к дому донесу, можно вопрос-а как же ты добился? В пару слов... |
| Автор: CaptainFlint 17.6.2005, 18:02 |
| Coocky Я ж написал: принцип работы - отрисовка рисунка прямо поверх изображения кнопки. |
| Автор: Coocky 17.6.2005, 21:18 |
| Константин Жук, ты Я думал ты какие то библы надыбал |
| Автор: CaptainFlint 17.6.2005, 22:04 | ||||
Невнимательны вы, товарищ Куки. Библы, кстати, пытался надыбать, но потерпел в этом полное фиаско. Кстати, скоро на своём сайте прожку URLFileSize заапдейтю - там энти вот кнопочки будут использоваться. Можно будет заценить на реальном проекте, так сказать, а не на демо-программке. |
| Автор: Coocky 17.6.2005, 22:07 |
| Константин А чем CBitmapbutton не устраивал? Кода на две строки... |
| Автор: CaptainFlint 17.6.2005, 23:43 | ||
Отсутствием поддержки XP-стиля. |
| Автор: Coocky 18.6.2005, 14:55 |
| А ну да, ты ж писал..Ну спасибо... Держи плюс за старания. Хотя для меня это не принципиально( вид кнопки), но ты ж старался |
| Автор: CaptainFlint 18.6.2005, 15:24 | ||
Не плюсиков ради, но всеобщего блага для! Просто мне XP-стиль нравится. А вот как выглядит диалог в этом стиле с кнопками типа CBitmapButton (см. аттач). Ну куда это годится? Уж лучше всё пусть будет в классическом стиле, чем такой кошмар. |
| Автор: ManiaK 19.6.2005, 10:55 |
| Константин ЦАРЬ! Наконец я понял, что ретуширование нужно не вручную лопатить... Держи репей! |
| Автор: Rickert 23.10.2006, 04:11 |
| У меня проблемы "слёта" стиля не встовало, потому что мне нужна была кнопка сразу с текстом и изображением, следовательно стандартное setIcon не подходило. ПРосто переопределил класс кнопки и в отрисовку, после отрисовки самой кнопки воткнул отрисовку поверх неё любого изображения, с указанием положения картинки и размеров. |
| Автор: AlexPro 23.10.2006, 07:33 |
| Для поддержки кнопок с картинками в стиле XP юзаю CXPStyleButtonST (взять можно здесь: http://www.codeproject.com/buttonctrl/cxpstylebuttonst.asp). Достаточно простой и удобный класс. Для скачивания, возможно, потребуется регистрация, но у меня в свое время это проблемы не вызвало. Любителей острых ощущений и всяческих интерфейсных извращений, вероятно, заинтересует CButtonST того же автора. Находится где-то там же. Советую взглянуть. |