Среда, 13.12.2017, 06:11
Монахов Роман Евгеньевич
Поэзия Жизни
Главная страница | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Наш опрос
Как вы нашли этот сайт?
Всего ответов: 102
Скачивать файлы могут только зарегистрированные пользователи
Регистрироваться?

Начало » Файлы » Исходники VC++ (cpp h)

Круглая кнопка на MFC (производный класс CButton)
[ ]
Круглая кнопка на MFC (производный класс CButton).При помощи этого класса можно сделать кнопку любой формы, используя обрезку кнопки регионом (CRgn) который можно хранить как в отдельном файле, так и в ресурсах программы. Я обычно делаю отдельную папку с банальным названием SKINS. В этой папке хранится регион для обрезки кнопки и растровое изображение, которое и отображается вместо стандартной кнопки. Не забывайте, создаваемая кнопка должна иметь стиль owner draw, т.к. виртуальная функция DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)переопределяется для нестандартной отрисовки кнопки. В этой функции и производятся все манипуляции: обрезка регионом рабочей области (обычно для рабочей области и области отображения используется один регион), создание в памяти образа (CDC) который потом копируется на кнопку.
В классе имеется функция инициализации, соответственно её надо выполнить при создании материнского окна.
Функция имеет вид:
InitButton(CWnd* this_wnd,int Height,int Width, CString TitleDown, CString TitleUp)
CWnd* this_wnd – материнское окно
int Height – высота растра
int Width – ширина растра
CString TitleDown – имя растра без формата
CString TitleUp – имя растра без формата

Я делаю так:
Растр при OnLButtonDown (80х100) – 0d.bmp
Регион к нему – 0d.rgn
Растр при OnLButtonUp (80х100) – 0u.bmp
Регион к нему – 0u.rgn
Следовательно, инициализация будет выглядеть так:
InitButton(this,80,100,”0d”,”0u”);В функцию можно добавить другие переменные: текст кнопки, массив анимации при наведении на кнопку и т.д. всё зависит от вашей фантазии.
Единственное НО: если вы заливаете диалоговое окно цветом или изображением, то на кнопке будет виден весь растр, но рабочая область не изменится. В таком случае рекомендую после создания нужных регионов изменить фон растра на участок нужного фона окна (если это сплошная заливка, то просто замените цвет на нужный). Я думаю разберётесь :) Выход всегда есть (даже если вас съели).
P.S. Вскоре выложу утилиту для создания региона.

Ключевые слова:
круглая кнопка на MFC VC++ Visual C++ CButton кнопка любой формы обрезка регионом исходники программный код круглой кнопки кнопка из региона картинки растра bmp замена стандартных кнопок нестандартная необычная мигающая цветная фигурная красивая кнопка в приложении MFC производный класс от CButton надоели прямоугольные кнопки как сделать круглую кнопку почему не видно круглой кнопки

Категория: Исходники VC++ (cpp h) | Добавил: monahov | Автор: Монахов Роман Евгеньевич
Просмотров: 6232 | Загрузок: 70 | Комментарии: 3 | Рейтинг: 5.0 |

Всего комментариев: 1
1  

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории каталога
Программы (exe) [3]
Библиотеки (dll) [4]
Исходники VC++ (cpp h) [1]
Форма входа
Поиск по каталогу
Друзья сайта
Статистика
Copyright MyCorp © 2006
Создать бесплатный сайт с uCoz