===== События =====
==== Назначение ====
Информационные сообщения с назначенными на него "событиями" используются телефоном для передачи информации из одной книги в другую. \\
Сообщения могут как содержать дополнительную информацию (//приложение//), так и могут быть отправлены без неё. \\
==== Методы приёма информации ====
=== Обработка событий книгой ===
Рассмотрим данный метод. \\
#pragma swi_number=0x12B
__swi __arm int CreateBook(void * mem, void (* onClose)(BOOK*), const PAGE_DESC * bp, const char * name, int __0xFFFFFFFF,int __0);
Как мы видим, третьим параметром при создании книги является PAGE_DESC. Это описание главной страницы книги. Данная страница будет добавлена в список активных страниц прямо при создании книги.\\
Пример описания страницы\\
const PAGE_MSG bk_msglst_base[] @ "DYN_PAGE" =
{
ELF_TERMINATE_EVENT, TerminateElf,
ELF_SHOW_INFO_EVENT, ShowAuthorInfo,
NIL_EVENT_TAG, NULL
};
const PAGE_DESC bk_base = {"MyElf_Base_Page",0,bk_msglst_base};
Как мы видим, в массиве bk_msglst_base записаны номера событий и соответствующие им процедуры.\\
**Обратите внимание**, что //фиксированные// события из эльфпака (**ELF_TERMINATE_EVENT**, **ELF_SHOW_INFO_EVENT**, **SBY_REDRAW_EVENT**, **993** и т.д.) не требуют суффикса _TAG, а события, входящие в DYN_CONST, должны быть обязательно записаны с ним.\\
Также следует отметить, что данным способом не все события могут быть получены в некоторых случаях. \\
=== Обработка событий с использованием ловушек ===
int onTimeReceived(UI_MESSAGE *message)
{
void *msg=message->data; //Дополнительная информация
//...
};
ModifyUIHook(UI_MEDIAPLAYER_AUDIO_PLAYING_TIME_EVENT, onTimeReceived, 1);
==== Функции передачи информации ====
[[elflib:functions:ui_event]], [[elflib:functions:ui_event_tobookid]], [[elflib:functions:ui_event_tobookidwdata]], [[elflib:functions:ui_event_tosid]], [[elflib:functions:ui_event_wdata]], где:
* toBookID - событие передаётся книге с определённым ID
* toSID - событие передаётся активной книге выбранной сессии
* wData - событие содержит дополнительные данные