Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Нужен учебник по стандартным функциям/классам https://www.cyberforum.ru/ cpp/ thread184511.html
Нужен учебник по стандартным функциям/классам C и C++, Борланд С++ буилдер, etc на русском. Во-первых не дублируйте темы. Во-вторых разберитесь как-нибудь с транслитом. И кстати почитайте правила форума, в частности пункт 3.10
Ввод зарезервированных символов ASCII C++
Здраствуйте! Есть консольная программа(си++,ос хр)... как в консоли ввести "крякодзябы"? мне нужно ввести в консоль символы которые за таблицей ascii кодов имеют коды(dec): 181,192,202...ето символы для графики...зарезервированые... (!) мне нада ето ввести в консоли.. как нажать ети символы? я тут уже полчаса жму на клаве комбинации клавиш и никак не могу......
C++ Как написать плагин для notepad++? как написать плагин для notepad++? есть какой-нибудь мануал? https://www.cyberforum.ru/ cpp/ thread184060.html C++ Распознать символы с картинки (капчи) https://www.cyberforum.ru/ cpp/ thread183287.html
здравствуйте! вопрос такой: имеется заранее известная картинка. картинка четкая (это НЕ капча). на картинке в известных местах находятся 5 цифр. делается скриншот. необходимо по нему узнать эти 5 чисел. в какую сторону копать? есть идеи/примеры?
Книга для начинающего C++
Посоветуйте книгу для первокурсника по c++. препод посоветовал гебрерда шилдта "C++. Базовый курс". но сейчас не могу найти ее в продаже а срочно надо. посоветуйте альтернативу. http://oz.by/books/topic10111.html - вот из этих. заранее спасибо
C++ [СИ] Циклический буфер переменной длины https://www.cyberforum.ru/ cpp/ thread182867.html
Мне дали задание для микроконтроллера (не важен какой, главное, алгоритм) написать циклический буфер переменной длины, равномерно распределенный по всей памяти (EEPROM), чтоб исключить перезапись в одну и ту же область памяти из за их ограничения числа записи-стирания. Там будут храниться сообщения передаваемые куда-то, новые сообщения по мере переполнения буфера затирают старые, при включения...
C++ Создание объекта класса в другом классе!!! https://www.cyberforum.ru/ cpp/ thread182861.html
//----------------------------------Address.h---------------------------------------------------- class Address { public: const static int SIZE_COUNTRY = 3; const static int SIZE_POSTCODE = 7; const static int SIZE_REGION = 11; const static int SIZE_INFO = 101; const static int SIZE_LINE = SIZE_COUNTRY + SIZE_POSTCODE + SIZE_REGION + 2*SIZE_INFO; const static int SIZE_XMLLINE =...
Visual Studio vs Visual Studio C++
Скажите какую версию лучше приобрести, учитывая что 2010 у меня очень зависает. Помогите пожалуйста.
C++ Как реализовать распознование антивируса на С++ https://www.cyberforum.ru/ cpp/ thread181365.html
Подскажите пожалуйста, каким образом Windows определяет какой антивирус установлен, если он установлен вообще! Как реализовать распознование антивируса на С++??
C++ Что лучше Visual Studio или Builder C++ подскажите? https://www.cyberforum.ru/ cpp/ thread180461.html
Что лучше Visual Studio или Builder C++ подскажите?
C++ Быстрая работа с графикой
Добрый день. интересует способ быстрого выведения множества пикселей на экран. мне не нужны полигоны и другие сложные объекты, нужны именно пиксели. также пока не важно, полноэкранный режим, или оконный, подойдут оба. как лучше это сделать в осях семейства windows?
C++ Как програмно создать переменную? как програмно создать переменную. тойст чтобы в нужном месте программа сама могла создавать переменную такую какую буден нужно (зависимо от входных параметров) https://www.cyberforum.ru/ cpp/ thread178820.html
0 / 0 / 1
Регистрация: 31.10.2010
Сообщений: 45
02.11.2010, 14:51  [ТС] 0

Реализация событий в С++ - C++ - Ответ 1078213

02.11.2010, 14:51. Показов 16366. Ответов 15
Метки (Все метки)

Ответ

void print_x () const { std::cout << x << std::endl; }
если убираю const, то не работает )

а мне надо вызывать ещё и виртуальную функцию)

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

К сожалению, админ удалил ссылку на мой блог ))) скидываю с него текст...


Реализация событий в С++

Опять столкнулся с проблемой, что в стандартном С++ нет указателя на функции, являющиеся членами класса (хотя есть указатель на обычную функцию). Для чего они могут понадобиться? На них можно было бы реализовать события, например, событие нажатия кнопки.

Пришлось пойти громоздким, но более-менее понятным путём. Для начала описываем класс события.

C++
1
2
3
4
5
6
7
8
9
10
11
template  class Event
{
public:
    Object *owner;
    T event;
    void set(Object *owner, T event)
    {
        this->owner = owner;
        this->event = event;
    }
};
Теперь опишем, тип “указатель на функцию”.

C++
1
typedef void (*ClickFunc)(Object *owner, Object *sender);
Затем, опишем тип «событие нажатия».

C++
1
typedef Event ClickEvent;
Ну пусть будет так… Как же теперь этим пользоваться?

Описываем классе кнопке Button событие onClick.

C++
1
2
3
4
class Button : Control {
public:
    ClickEvent onClick;
};
Во классе форме Form, где будет располагаться кнопка, описываем статическую функцию и обычную нормальную функцию, которую необходимо вызвать по событию.

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Form {
public:
    static void stMyClick(Object *owner, Object *sender);
    virtual void myClick(Object *sender);
};
void Form::stMyClick(Object *owner, Object *sender) {
    ((CMy2*)owner)->myClick(Sender);
    
}
void Form::myClick(Object *sender) {
    //Код, выполняющийся по событию
}
Далее, в реализации какой-либо функции (или, например, в конструкторе) класса Form пишем следующее:

C++
1
2
Button *btn = new Button();
btn->onClick.set(this, stMyClick);
А уже в менеджере, который будет обрабатывать события, пишем следующее:

C++
1
if  (control->OnClick.event != NULL) control->OnClick.event(owner, sender);
Мдааа... Жесть...

Вернуться к обсуждению:
Реализация событий в С++ C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2010, 14:51
Готовые ответы и решения:

Реализация журнала ошибок и протоколирования событий
Добрый день, уважаемое сообщество. При написании выпускной работы появилась необходимость вести...

Тетрис - Реализация таймера и обработка событий с клавиатуры
Пишу консольный тетрис. Столкнулся с проблемой таймера и перехвата событий с клавиатуры. Раньше с...

Реализация программы на С++ (Найти вероятности следующих событий:)
Помогите пожалуйста реализовать на С++ или на С# программу по этой задаче N стрелков...

Реализация ожжидания сразу двух событий
Допустим есть три потока, один из которыйх должен ждать наступления одного из двух событий и...

15
02.11.2010, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2010, 14:51
Помогаю со студенческими работами здесь

Реализация обработчика событий
Помогите написать обработчик событий, такой, что при клике мыли в окне, будет появляться квадрат...

Клиент OLE Automation, реализация класса стока событий
Всем привет. Задача такая, есть сервер и клиент OLE Automation. У сервера есть несколько событий,...

Сгенерировать 30 случайных событий с интенсивностью 10 событий в час с помощью мастера функций
Добрый день! Помогите решить.:( Задача: Сгенерировать 30 случайных событий с интенсивностью 10...

Суммой двух событий А и В называется событие С, состоящее…1) в наступлении хотя бы одного из событий А и В2
Суммой двух событий А и В называется событие С, состоящее… 1) в наступлении хотя бы одного из...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru