Открыть главное меню

Event (также называют ивент, эвент) - событие системы AFW. Структура EVENT_T.

AFW представляет как ивент:

  • действие пользователя
  • сообщения от других процессов

Также некоторые ивенты создаются в пределах AFW процесса. Например: запрос данных каким либо диалогом, ивент нажатия кнопки пользователем рассматривается диалогом как нажатие какойто конкретной кнопки диалога (например софтовой)(диалог при этом удаляет ивент нажатия на кнопку и добавляет свой ивент), а также др.

При создании ивенты добавляются в стэк событий. Последний добавленный ивент первым должен быть обработан. Приложения должны обрабатывать ивенты и соответственно их логие реагировать на события. При удалении (consume, см. APP_ConsumeEv) ивента он удаляется не сразу, сперва помечается на удаление и когда точно ни одно приложение его уже не использует, память освободжается.


Структура EVENT_T

  • EVENT_CODE_T code - уникальный код ивента
  • UINT32 unk1 - неизвестно
  • UINT32 ev_port - неизвестно
  • UINT8 ev_catg - неизвестно
  • BOOL unk2 - TRUE если ивент удален (consumed)
  • BOOL first_pass - неизвестно
  • UINT8 unk3 - неизвестно
  • UINT32 unk4 - неизвестно
  • UINT32 unk5 - неизвестно
  • EVENT_T * next - указатель на следующий ивент в стэке
  • UINT32 data_tag - указывает как интерпритировать следующее объединение
  • EVENT_DATA_T data - объединение, может содержать что угодно (см. описание union в языке Си)
  • FREE_BUF_FLAG_T free_buf - флаг указывающий "нужно ли освобождать attachment при удалении ивента"
  • UINT16 att_size - размер буфера attachment
  • void * attachment - auxiliary (англ. вспомогательный) данные
  • UINT8 unk6 - неизвестно

Функции