Механизм сообщений позволяет изменить стандартную схему обработки модели и построить свою для обеспечения необходимого взаимодействия объектов. Используются специальные функцииMessage_functions.


1. Сообщения между объектами.

Сообщение посылается всем объектам с указанным именем или всем объектам указанного класса (см SendМеssageSendMessage). Объект, отправляющий сообщение, называется источником сообщения, объекты, его получающие - приемниками сообщения.


При этом происходит копирование указанных переменных объекта источника сообщения в объект приемник, затем обработка модели объекта и копирование переменных обратно в объект источник. Если объектов приемников сообщений несколько, данная процедура повторяется.


2. Сообщения объектам от среды Windows.

Применение сообщений от среды Windows призвано увеличить скорость работы приложений, чтобы исключить опрос мышки, клавиатуры и так далее без особой на то необходимости. Для получения объектом сообщений, необходимо зарегистрировать его с помощью команд RegisterObjectRegisterObject или SetCaptureSetCapture. После этого объект начинает синхронно обрабатывать сообщения до выполнения команд UnRegisterObjectUnRegisterObject или ReleaseCaptureReleaseCapture.


Пример. Обработка клавиатуры.

Объект имеет следующую модель.


HANDLE HSpace    // Дескрипторы пространства (приходит по связи)

FLOAT init       // Флаг регистрации объекта

FLOAT msg, wVkey // wVkey - код виртуальной клавиши


if (not(init))   // если объект не зарегистрирован

 init := 1       // установить флаг в 1

 registerobjectRegisterObject (HSpace,#0,"",WM_KEYUP,0) // Зарегистрировать объект

endif

...              // Обработка кода нажатой клавиши



Обработка сообщений происходит следующим образом.


       


При каждом нажатии кнопки на клавиатуре при ее отпускании генерируется сообщение объекту. В переменную fwKeys копируется виртуальный код нажатой клавишиVirtual_Keys и происходит обработка модели объекта.


Сообщения и переменные.

Специальные переменные во время прихода сообщения получают определенные значения (см. Предопределенные переменныеDefault_Vars).

Во всех случаях в имидже должна существовать переменная msg типа FLOAT. Если ее нет, сообщения обрабатываться не будет. В переменную msg записывается код сообщения, который можно определить в процессе обработки сообщения.


см. Интерфейсные элементыControl_objects

см. Константы сообщений от интерфейсных элементовControl_notification_messages

Created with the Personal Edition of HelpNDoc: Revolutionize Your Documentation Review with HelpNDoc's Project Analyzer