Содержание

События

Назначение

Информационные сообщения с назначенными на него «событиями» используются телефоном для передачи информации из одной книги в другую.
Сообщения могут как содержать дополнительную информацию (приложение), так и могут быть отправлены без неё.

Методы приёма информации

Обработка событий книгой

Рассмотрим данный метод.

#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);

Функции передачи информации

ui_event, ui_event_tobookid, ui_event_tobookidwdata, ui_event_tosid, ui_event_wdata, где: