~uno
|
Классы событий Evn[N]
     Отработка события проходит по следующему пути: Событие Windows - MyWin - ClassDrv -очередь Execut - таймер - Exec - обработчик (LBDnUni) - EvnExe - пользовательская функция. Зарегистрировано 27 событий контролла Evn1-Evn27. Обработчик события находится внутри класса. Класс - таблица переходов на программы- обработчики. Существует предопределенный встроенный класс UniTabl и пользовательские классы. Кроме того, для выполнения кода используются отдельные обработчики.
     Координаты мыши на контролле в момент события отражаются в глобальных переменных MosFH, MosFV.
     Адреса пользовательских обработчиков событий подключают к точкам контролла Evn1-Evn27, заменяя заглушки 0.
     Вызов обработчика класса ClassDrv [Obj, NProg] из MyWin добавляет обработчик из таблицы класса ArrClass в список - очередь исполняемых программ Execut (формат: /объект, прогр/).
     Запуск исполняемой программы (обработчика) из списка Execut (формат: /объект,прогр/) производит программа Exec по глобальному таймеру WM_TIMER. Указатель на объект, вызвавший программу, заносится в глобальную переменную AdrObj и регистр ESI.
     Обработчики событий устанавливают в глобальную SelectObj адрес текущего объекта и вызывают программу EvnExe - выполнение пользовательской функции события Evn с его номером ENum. Вызвавший контролл принимается в ESI. Передача в обработчик: EBX = ENum, ESI=вызвавший контролл.
     При созданиии контролла используется функция SetStackFrm - установка на форму в Dat20 ссылки на групповую переменную локального стека. Таким образом, локальный стек можно восстановить при запуске программы-обработчика. Обработчик не имеет локальных параметров, кроме регистров EBX = ENum, ESI=вызвавший контролл. Пример начала пользовательского обработчика: Claster4 ESI JL EEE TestAdr [EAX+Dat20] JL EEE MOV ArrStack1, EAX
     События, 1 кластер контролла:
EvenTp = 64+M1Dt ; Тип реакции (0-нет, 1-прямая, 2-триггер) EvLast = 68+M1Dt ; Текущее событие(0-нет, 1-есть) EvMous = 72+M1Dt ; Текущее событие mouse (0-нет, 1-есть) EditTx = 76+M1Dt ; редактир текста: 0-запрет, 1
     События, 3 кластер контролла:
Страница "События Evn[N]" обновлена 18.2.2016
|
Проекты:
Определения:
Определения
Система
Проект PintLang
VendorPint
Глобальные константы
Глобальные переменные
Ресурсы
События
VendorPint
|