+ Ответить в теме
Показано с 1 по 5 из 5.

Тема: Обработчик событий

  1. #1
    programmer Apokal is on a distinguished road
    Регистрация
    14.01.2008
    Сообщений
    71

    Обработчик событий

    Добрый день. Подскажите пожайлуйста литературу или другие ресурсы о том как устроен механизм событий в программах. Я имею вввиду как его написать с нуля. Вот есть у меня "чистый лист бумаги" и какой либо язык программирования, как зделать так чтоб у меня был набор событий, какой либо класс мог генерировать это событие, а другие на него подписываться. Интересует именно сам принцип организации такого действа, как допустим организовано в мфц. Заранее спасибо. Незнал где тему создать, создал тут ибо желательно было бы видеть куски кода на с++, если таковые будут иметься.
    For Those Who About The Rock We Salute You!!!

  2. #2
    developer Decoder is on a distinguished road Аватар для Decoder
    Регистрация
    20.02.2008
    Адрес
    Moscow
    Сообщений
    197

    Re: Обработчик событий

    Принцип везде примерно один и тот же: описывается некая процедура, в которой происходит идентификация и обработка нужных событий. А когда создаётся какой-то системный объект, порождающий эти события, ему в качестве параметра передаётся указатель на эту процедуру. Сам факт вызова данной процедуры с определённым набором передаваемых ей параметров - это собственно и есть событие. Объектами, порождающими события, могут быть потоки (threads), графические окна в Windows, триггеры в СУБД, драйвера устройств или какие-то другие системные сервисы. А уже конечная реализация методов обработки тех или иных событий в каждой конкретной библиотеке С++ выполняется по-своему.
    К примеру: всем известная функция main() - есть ни что иное как обработчик события запуска приложения.
    На С++ можно делать всё, но самое трудное - сделать как надо.

  3. #3
    programmer Apokal is on a distinguished road
    Регистрация
    14.01.2008
    Сообщений
    71

    Re: Обработчик событий

    Хм.. хорошо допустим с генерацией событий я понял, а с подписокой? Допустим некий класс вызвал ту процедуру с определенными праметрами, тобишь сгенерил событие, а дальше, как допустим эта процедура сможет оповестить кучу других классов что произошло событие? З.Ы. Спасибо за помощь
    Последний раз редактировалось Apokal; 16.07.2010 в 13:27.
    For Those Who About The Rock We Salute You!!!

  4. #4
    developer Decoder is on a distinguished road Аватар для Decoder
    Регистрация
    20.02.2008
    Адрес
    Moscow
    Сообщений
    197

    Re: Обработчик событий

    Ну а как это обычно делается в С++?
    Все нужные тебе классы, которые зависят от данного события, наследуются от какого-то базового класса, у которого имеется соответствующий виртуальный метод. Пусть это будет базовый класс CEventSync с виртуальным методом Advise(). Все классы, которые наследуются от класса CEventSync должны будут переопределить виртуальный метод Advise(), т.е. реализовать в нём собственную процедуру обработки данного события.
    Дальше тебе нужно будет создать динамический массив указателей на базовый класс CEventSync. Каждый класс, унаследованный от CEventSync, при создании экземпляря объекта (т.е. в конструкторе) должен добавлять указатель на самого себя (this) в этот динамический массив, а в деструкторе удалять собственный указатель из этого массива.
    Сама процедура обработки событий циклом обходит весь этот массив указателей и для каждого объекта вызывает метод Advise(). Таким образом каждый объект получит уведомление о произошедшем событии.
    На С++ можно делать всё, но самое трудное - сделать как надо.

  5. #5
    programmer Apokal is on a distinguished road
    Регистрация
    14.01.2008
    Сообщений
    71

    Re: Обработчик событий

    Спасибо огромное. Меня посещали подобные идеии, и тут они подтвердились. Теперь все понятно. Спасибо еще раз
    For Those Who About The Rock We Salute You!!!

+ Ответить в теме

Похожие темы

  1. Replies: 9
    Последнее сообщение: 01.07.2008, 00:18
  2. Обработчик нажатия кнопки
    By intNaked in forum MS Office и VB(A).
    Replies: 0
    Последнее сообщение: 17.11.2006, 17:56
  3. Нужен обработчик окон IE на WSH
    By Петр1 in forum Вакансии и заказы для программистов
    Replies: 0
    Последнее сообщение: 08.11.2005, 19:40
  4. Replies: 4
    Последнее сообщение: 24.03.2005, 17:03
  5. Обработчик ошибок
    By duke in forum Delphi и Pascal
    Replies: 7
    Последнее сообщение: 05.07.2004, 23:26

Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения