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

Вы можете просмотреть список ответных реакций, чтобы получить значение соответствующего ресурса списка ответных реакций. Тип значения, которое Вы получаете из ресурса списка ответных реакций, отличается от значения, использованного для установки ресурса. Несмотря на то, что этот ресурс установлен на массив записей ответных реакций, значение, полученное при получении ресурса, является указателем на список записей ответных реакций. Типом этого списка является PtCallbackList_t. Каждый элемент списка содержит член cb (т.е. запись ответной реакции) и следующий указатель (который указывает на следующий элемент списка).

Следующий пример показывает, как Вы можете пройти по списку ответных реакций Pt_CB_ACTIVATE для виджета, чтобы найти все экземпляры конкретной функции ответной реакции cb:

...

PtCallbackList_t *cl;

PtGetResources(widget, Pt_CB_ACTIVATE, &cl, 0);

for ( ; cl; cl = cl->next )

{

if ( cl->cb.func == cb )

break;

}

    1. Обработчики событий

Вы можете добавлять и удалять обработчики событий (необработанные или отфильтрованные ответные реакции) в программном коде Вашего приложения, так же как и в PhAB – однако, имеются несколько отличий между двумя типами.

 Описание необработанных и отфильтрованных ответных реакций, и то, как это используется, см. в разделе "Обработчики событий – необработанные и отфильтрованные ответные реакции" в главе "События".

Для получения более полной информации по добавлению обработчиков событий в PhAB см. раздел "Обработчики событий – необработанные и отфильтрованные ответные реакции" в главе "Редактирование ресурсов и ответных реакций в PhAB".

          1. Добавление обработчиков событий

Как и в случае ответных реакций, Вы так же можете установить или просмотреть обработчики событий, чтобы выполнить установку или получить данные, в ресурсе обработчика событий. Следующие ресурсы в PtWidget позволяют Вам задавать обработчики для событий Photon'a:

  • Pt_CB_FILTER

  • Pt_CB_RAW

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

Операция установки требует массива записей обработчиков событий типа PtRawCallback_t. Они похожи на записи ответных реакций, обсуждавшиеся выше, и имеют поля event_mask, event_f и data.

Поле event_mask – это маска типов событий Photon'a (см. описание PhEvent_t в "Справочнике библиотечных функций Photon'a"), указывающая, какие события будут являться причиной вызова функции ответной реакции [Прим. пер. Наверное, это неточность: не функции ответной реакции, а функции обработчика ]. Члены event_f и data – это функция обработчика события и данные клиента соответственно.

 Если Вы добавляете обработчик событий реализованному виджету и регион виджета нечувствителен к одному или более типов событий, содержащихся в маске событий, то регион делается чувствительным к ним.

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

Операция получения данных получает список PtRawCallbackList* записей обработчиков событий. Как и в случае списка ответных реакций, список содержит два члена: next и cb. Член cb – это запись обработчика события.

Вы можете добавить обработчики событий Pt_CB_RAW, используя функции PtAddEventHandler() или PtAddEventHandlers(). Вы можете добавить обработчики событий Pt_CB_FILTER, используя функции PtAddFilterCallback() или PtAddFilterCallbacks(). Аргументами PtAddEventHandler() и PtAddFilterCallback() являются:

widget

Виджет, к которому должен быть добавлен обработчик события

event_mask

Маска событий определяет, какие события будут приводить к вызову обработчика событий

event_f

Функция обработки события

data

Указатель, передаваемый обработчику событий и указывающий на клиентские данные

Аргументами функций PtAddEventHandlers() и PtAddFilterCalbacks() являются:

widget

Виджет, к которому должны быть добавлены обработчики событий

handlers

Массив записей обработчиков событий

nhandlers

Число обработчиков событий, задаваемых в массиве

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