Форум программистов, компьютерный форум CyberForum.ru

Как организовать события в С++ - C++

Восстановить пароль Регистрация
 
Leoleshucov008
13 / 13 / 1
Регистрация: 23.02.2010
Сообщений: 221
12.04.2014, 16:34     Как организовать события в С++ #1
Привет, форумчане. Задача у меня такая - нужно написать простенький графический редактор для курсача. Использовать windows forms нельзя. А в качестве графической библиотеки преподаватель разрешает использовать только WinBGIm. В программе будет 3 типа кнопок (выбор цвета, инструмента и кнопки управления) и само поле для рисования.
Возникла следующая проблема - эти элементы(кнопки и поле рисования) должны реагировать на события (клик, движение курсора). В предложенной библиотеке есть функция -registermousehandeler(kind, h), которая вызывает функцию h при генерации события типа kind. Но вот если напрямую для каждой кнопки забиндить функцию нажатия, то после генерации этого события будет вызвано n-ое количество функций, что не эффективно, так как сработать должна только одна. Поэтому я решил сделать так - массив элементы которого - структура Event
C++
1
2
3
4
5
struct Event {
    Object *o; //Объект 
    EventType type; //Тип события
    Point lt, rb; //Координаты на которых прослушивается событие (левый верхний и правый нижний углы)
};
Функция ExecuteEvent которая при вызове события ищет в массиве подходящий элемент и в зависимости от типа события вызывает соответствующий метод объекта. Но Object - это базовый класс, а классы кнопок это наследники класса Object и у них переопределены методы реагирования на события.
C++
1
2
3
4
5
6
7
8
9
class Object {  
public:
    //Events Functions
    virtual void LBDown(int x, int y){};
    virtual void LBUp(int x, int y){};
    virtual void MMove(int x, int y){};
};
class ColorButton :public Object{};
class ToolButton :public Object{};
Но теперь, функцией реагирования на событие будет метод, который определен в классе Object. А мне нужно вызвать метод класса ColorButton либо для ToolButton. Как это сделать? Или может быть кто-нибудь предложит другой вариант решения этой задачи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2014, 16:34     Как организовать события в С++
Посмотрите здесь:

C++ как организовать ?
как организовать конвейер C++
C++ Как организовать меню..в Си...
Как организовать цикл? C++
Как организовать таймер? C++
Как заствить картинки реагировать на события? C++
C++ Как спровоцировать выполнение события?
Как организовать класс? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 14:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru