Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
76
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать
    1. Генерирование событий

В этом разделе описывается использование функции PhEmit(), а также

  • нацеливание на определённые регионы

  • нацеливание на определённые виджеты

  • события, генерируемые клавиатурными клавишами

Основным способом генерирования событий в Вашем приложении является вызов функции PhEmit():

int PhEmit(PhEvent_t *event,

PhRect_t *rects,

void *data);

Её аргументами являются:

event

Указатель на структуру PhEvent_t. Приложение, генерирующее событие, должно установить следующие члены:

  • type – тип события.

  • subtype – подтип события (если необходимо).

  • flags – модификаторы события (напр., направление).

  • emitter – структура типа PhEventRegion_t; Вам необходимо установить по меньшей мере идентификатор региона, генерирующего событие.

  • translation – при генерировании события обычно устанавливается в (0,0).

  • num_rects – количество прямоугольников в аргументе rects функции. Если Вы устанавливаете значение num_rects в 0, Вы также должны передать в качестве rects NULL.

  • event–>collector.rid – если Вы устанавливаете идентификатор накопителя в 0, событие ставится в очередь для каждого должным образом чувствительного региона, интересующегося событием.

Если вы устанавливаете идентификатор накопителя равным идентификатору какого-то региона, только этот регион замечает событие.

Менеджер Photon'а, после того, как поставил копию события в очередь к приложению, устанавливает в структуре события следующие члены:

  • timestamp – время, когда событие было сгенерировано (в миллисекундах);

  • collector – структура типа PhEventRegion_t, которая включает идентификатор региона-накопителя.

rects

Массив структур PhRect_t (см. "Справочник библиотечных функций Photon'а"), указывающих на набор начальных прямоугольников события. Если этот аргумент является NULL'ом, набор состоит из единственного прямоугольника, соответствующего генерирующему региону.

data

Данные, действительные для того типа события, которое было сгенерировано. Каждый тип событий имеет свой собственный тип данных, как описано в описании структуры PhEvent_t в "Справочнике библиотечных функций Photon'а".

Если специфические для события данные не находятся в примыкающей области памяти, функция PhEmitmx() может Вам показаться более полезной, нежели PhEvent():

int PhEmit(PhEvent_t *event,

PhRect_t *rects,

int mxparts,

struct_mxfer_entry *mx);

Кодами возврата функций PhEmit() и PhEmitmx() являются:

Неотрицательное значение

Успешное завершение

-1

Произошла ошибка; значение ошибки установлено в errno

      1. Нацеливание на определённые регионы

Иногда приложению необходимо нацелить событие непосредственно на определённый регион, без совершения путешествия события через всё пространство событий, до прибытия на этот регион. Вы можете использовать неисключительное событие (inclusive event) или направленное событие (direct event), чтобы обеспечить обнаружение события конкретными регионами.

Соседние файлы в папке Литература_1