Программирование вручную нажимаемой кнопки в графическом интерфейсе Borland

Я сейчас работаю редактором, и мне нужно сделать кликабельную кнопку на BGI (она должна быть на нем).

Прямо сейчас я сделал что-то вроде использования outtextxy, дал координаты, то я сделал if используя координаты, полученные mousex а также mousey, если он равен координатам из outtext, он делает свою работу.

Это все еще не достаточно хорошо для меня, я хочу создать функцию, которая, когда я использую outtextсоздает одновременно if условие, которое я сделал (вручную положить if условие для каждого outtext это большая работа по программированию).

Может ли кто-нибудь помочь мне, показывая мне, как я могу сделать эту функцию?

0

Решение

BGI никогда не предназначался для управления окнами / виджетами — это низкоуровневая примитивная библиотека. Для того, чтобы делать то, что вы хотите, вам нужно реализовать форму WM сверху.

Для простого добавления кнопок все, что вам нужно, это класс кнопки, который инкапсулирует положение кнопки, код для рисования кнопки, код для определения, находится ли координата (x, y) внутри кнопки, состояние рисования кнопки (зависание, нажатие, нормальное состояние) и событие клика.

Тогда в вашем основном цикле вы захотите перебрать все ваши кнопки, чтобы увидеть, находится ли мышь (x, y) внутри кнопки. Если событие мыши является щелчком, то вызывайте событие нажатия кнопки.

То же самое верно для любого другого типа виджета, который у вас есть в вашем приложении, такого как окно text / edit. Так работают все менеджеры окон / виджетов.

То, как вы реализуете это в своем приложении, полностью зависит от вас. Я рекомендую простой std::vector<BGIWidget> (или как вы называете ваш виджет суперкласс). Затем все, что вам нужно сделать, это перебрать свой список виджетов для обработки таких вещей, как рисование, события наведения мыши / ввода / выхода / нажатия и т. Д.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]