Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
 Аватар для ucs
5 / 5 / 2
Регистрация: 15.06.2011
Сообщений: 20

Пример создания круглой кнопки

15.06.2011, 00:25. Показов 7734. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у меня есть пример создания круглой кнопки,но что-то я запутался и не могу разобраться что и куда,помогите,плз

Цитата Сообщение от m_Valery
Сделать свой класс кнопки.Добавить в хедер-файле

C++
1
2
3
4
5
6
...
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
    virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);
    afx_msg void OnBnClicked();
 
...
В сpp. файле дописать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
...
void MButton::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
 
    CButton::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
 
void MButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
    CDC* pDC;
    pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    CBrush brush;   
    if(lpDrawItemStruct->itemState & ODS_DISABLED){
        brush.CreateSolidBrush(RGB(192,192,192));
    }else{ brush.CreateSolidBrush(RGB(230,230,230));}
    pDC->SelectObject(&brush);
    CRect r = lpDrawItemStruct->rcItem;
    if(lpDrawItemStruct->itemState & ODS_SELECTED){
        r.OffsetRect(2,2);
    }
    pDC->SetBkMode(TRANSPARENT);
    pDC->Ellipse(r);
    pDC->DrawText(L"Button",(&r),DT_CENTER|DT_SINGLELINE|DT_VCENTER);
 
}
 
void MButton::OnBnClicked()
{
    MessageBox(L"Вы нажали круглую кнопку");
}
...
Далее вытащить из ToolBox кнопку.придать ей квадратную форму,и добавить ее контрол переменную типа MButton,а не CButton.Не забыть поставить в Properties этой кнопки Owner Draw в true.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2011, 00:25
Ответы с готовыми решениями:

Пример создания Alias для базы данных MS Access
Помогите наконец разобраться мне, а заодно и всем у кого возникнет когда-либо такая проблема. Ошибка программы выдает: ...

Создание круглой кнопки
Приветствую. Подскажите можно ли как-нибудь сделать из стандартной кнопки круглую, ну или другие варианты создания круглой кнопки.

Тень круглой кнопки
Рисую круглую кнопку: class But (QtWidgets.QPushButton): def __init__(self, back_image): super().__init__() ...

6
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
15.06.2011, 00:51
В своей программе, где именно запутался?
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.06.2011, 02:44
вставить круглую картинку в бинбатот, самое простое, или нарисавать на канве кружок и вставить туда картинку, да обрабатывать по координатам
1
 Аватар для ucs
5 / 5 / 2
Регистрация: 15.06.2011
Сообщений: 20
15.06.2011, 19:09  [ТС]
и добавить ее контрол переменную типа MButton,а не CButton - в этом месте особенно не понятно

да и на afx_msg ругается и на это прекрасное сочетание MButton::OnDrawItem

и спитбатон или канва не подходят,мне нужен именно компонент
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
15.06.2011, 19:38
Цитата Сообщение от ucs Посмотреть сообщение
и на это прекрасное сочетание MButton::OnDrawItem
А как ваш класс называется?

Добавлено через 25 минут
Я не любитель огородов... Сделайте через регионы:
C++
1
HRGN region;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  // Задаем размер кнопке
        Button1->Height = 25;
        Button1->Width = 75;
  /* Функция создает круглый регион
  (x - верх левого угла, y - верх левого угла,
  x - правого нижнего угла, y - правого нижнего угла)
  */
        region = CreateEllipticRgn(0,25,75,0);
  // Устанавливаем регион нашей кнопке.
        SetWindowRgn(Button1->Handle,region,true);
}
//---------------------------------------------------------------------------
Если хотите красиво, то сделайте через картинки по совету LK. На форуме была тема от NiTan-a
2
 Аватар для ucs
5 / 5 / 2
Регистрация: 15.06.2011
Сообщений: 20
15.06.2011, 22:03  [ТС]
и дело в том,что мне именно компонент нужен,а не просто на форме изобразить...

Добавлено через 5 минут
а вот за регионы отдельное большое спасибо!
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
15.06.2011, 22:13
ucs, Можете почитать, лишним не будет: Создание событий MouseEnter и MouseLeave для TImage
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2011, 22:13
Помогаю со студенческими работами здесь

Создание круглой кнопки
Добрый вечер! Подскажите как можно создать круглую кнопку, на подобии кнопок во вкладках "хрома"??

Компонент круглой кнопки
Пытался разобраться сам, но все же обращусь за помощью к более опытным... Мне нужно создать компонент круглой кнопки. Создать-то я его...

Сглаживание круглой кнопки
Доброго дня. Создал круглую кнопку, путем прописывания в обычной button: System::Drawing::Drawing2D::GraphicsPath^ gPath = gcnew...

Как убрать белые края круглой кнопки?
Создаю небольшой плеер для своей оболочки. Для того,чтобы сделать кнопки круглыми использовал такой код: ...

Пример создания календаря
Подскажите где примеры посмотреть... или подскажите как узнать в такой ситуации: Пн 1 Вт 2 Ср 3 Чт 4 Пт 5 Сб 6 Вс 7


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru