170 похожих чатов

Хочу реализовать GUI Для взаимодействия с юзером есть мышь и клавиатура написал

классы соотв.
class Mouse {
public:
virtual void on_button_down(sf::Vector2i pos, Button btn) {}
virtual void on_button_up(sf::Vector2i pos, Button btn) {}
virtual void on_button_click(sf::Vector2i pos, Button btn) {}
// on_move, on_enter, on_exit
};
class Keyboard {
public:
virtual void on_key_down(Key code) {}
virtual void on_key_up(Key code) {}
virtual void on_key_count(Key code) {}
};

ладно самое обычно взаимодействие, но в этом бренном мире существует фокус!
как реализовывать фокус? при таких базовых классах нужно, чтобы фокус определил методы on_button_down, on_button_up, чтобы собственно "собой" управлять.
тогда возникает проблема, что, например, если определить on_button_down, нужно, чтобы он дальше мог прокинуть этот вызов, не нарушать же логику?
получается должен быть метод on_pre_button_down, а если будет focus'? а focus''? определять on_pre_..._pre_button_down? как жить?
получается ад перфекциониста, и как на зло все статьи, что я нашел в интернете предлагают просто спиздить фокус в нужный момент.
хочется снова впасть в депрессию...

1 ответов

2 просмотра
Тамар-Кусь Автор вопроса

хочется добавить пример ,,идеальной,, реализации фокуса class Focus: public Mouse, public Keyboard { public: virtual void on_button_down(sf::Vector2i pos, Button btn) { last_click_pos[int(btn)] = pos; this->??? on_button_down(pos, btn); // вызов для следующего переопределения } virtual void on_button_up(sf::Vector2i pos, Button btn) { if (last_click_pos[int(btn)] == pos) on_button_click(pos, btn); this->??? on_button_up(pos, btn); // вызов для следующего переопределения } private: sf::Vector2i last_click_pos[int(Button::Count)]; }; и вот как...

Похожие вопросы

Обсуждают сегодня

Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
1
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
9
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Или ты челендж хочешь?
Ilya Shvechikov
7
Карта сайта