Из всего сказанного выше уже понятно, что любой «клиент»
способен инициировать выполнение действий «сервером» посредством вызова одной
из его функций. Однако существует и обратная связь. То есть «сервер» способен
инициировать выполнение определенных функций «клиентом». Это происходит в том
случае, если «сервер» посылает клиенту сообщение об одном из предусмотренных
событий. При получении такого сообщения «клиент» вызывает соответствующую
функцию – обработчик из себя самого. Принципиальная разница состоит в том, что
если «клиент» вызовет несуществующую функцию «сервера», то возникнет ошибочная
ситуация. А если «сервер» пришлет «клиенту» такое событие, для которого у
«клиента» нет функции – обработчика, то просто ничего не произойдет. А это, в
свою очередь, означает, что «клиент» не обязан иметь в себе обработчики всех
предусмотренных сообщений. Он может обрабатывать только те, которые интересуют
его, или вообще никакие не обрабатывать. Но мы настоятельно рекомендуем всегда обрабатывать хотя бы одно сообщение —
BeforeClose. Это сообщение возникает, когда пользователь
закрывает окно с документом, к которому «прицеплен» «клиент», или вообще
выходит из программы (имеется в виду «О!Пиум»). Хороший тон для любого
«клиента» в этой ситуации — завершить своею работу.
Сообщения могут иметь или не иметь параметры. Ниже представлены
сообщения, посылаемые «сервером» «О!Пиум», разделенные на три группы по смыслу.