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 ответов

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

хочется добавить пример ,,идеальной,, реализации фокуса 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)]; }; и вот как...

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта