Главная :: Программы для программирования :: wxWidgets :: Перевод книги "Programming with wxWidgets" :: Глава III – Обработка сообщений. Часть 1
"Ну и запросы у вас..." - сказала база данных и повисла.

Глава III – Обработка сообщений. Часть 1

В этой главе разъясняются основные принципы построения управляемых сообщениями приложений. Рассказывается о том, как генерируются сообщения, как приложение может перехватить их с помощью таблицы сообщений и про методы обработки сообщений. Мы также обсудим присоединяемые (динамические) обработчики сообщений, а также опишем методику создания собственных классов, типов и макросов для сообщений.

Управляемые сообщениями приложения

Когда произошел первый релиз ОС Apple Macintosh программисты были поражены насколько эта ОС отличается от всех остальных, используемых в то время. Передвигая указатель от одного окна к другому, используя полосы прокрутки, меню, текстовые элементы управления и тому подобное было сложно представить как работает код, реализующий все это. Казалось, что множество различных действий происходят параллельно, но это является лишь иллюзией. Для большинства людей Macintosh стал первым введением в мир программ, управляемых сообщениями.

Все современные GUI-приложения управляются сообщениями. Это означает, что приложение находится в цикле, ожидая прихода нового сообщения от пользователя или из другого источника (например, это происходит когда окно нуждается в перерисовке или ждет сообщений от сокетов). После прихода нового сообщения приложение его распаковывает и выполняет подходящую функцию, которая обрабатывает полученное сообщение. Хотя и кажется, что окна обновляются одновременно, но большинство графических приложений не является многопоточными, а поэтому скорость их реакции зависит от скорости выполнения других приложений. Особенно это заметно, когда что-то сильно замедляет компьютер. Тогда вы сможете увидеть, как медленно прорисовывается каждое окно, одно за другим.

Существующие мультиплатформенные библиотеки по-разному представляют обработку сообщений для программиста. Как будет показано далее, основным методом обработки сообщений в wxWidgets является использование таблиц сообщений.