logo search
Литература_1 / photon_old

Удаление ответных реакций

Вы можете удалить одну или более ответных реакций из списка ответных реакций, связанных с ресурсом виджета, используя функции PtRemoveCallbacks() и PtRemoveCallback().

Не пытайтесь удалять ответные реакции, которые были добавлены через PhAB; результатом может стать непредсказуемое поведение.

Функция PtRemoveCallbacks() берёт массив записей ответных реакций как аргумент и удаляет все ответные реакции, заданные ей в списке ответных реакций. Функция PtRemoveCallback() удаляет только одну функцию ответной реакции из списка ответных реакций. Обе функции берут виджет как первый аргумент и ресурс виджета как второй аргумент.

Чтобы удалить ответную реакцию с кнопки, созданной нами выше, мы должны сделать следующее:

int push_button_cb( PtWidget_t *, void *, PtCallbackInfo_t *);

PtCallback_t callbacks[] = { {push_button_cb, NULL} };

PtRemoveCallbacks(button, Pt_CB_ACTIVATE, callbacks, 1);

или так:

int push_button_cb( PtWidget_t *, void *, PtCallbackInfo_t *);

PtRemoveCallback(button, Pt_CB_ACTIVATE, push_button_cb,

[Прим.пер. – так в тексте, без последнего параметра. Вероятно, должнен быть равен 1].

Оба – указатель на функции ответной реакции и указатель на данные клиента – важны при удалении ответных реакций. Только первый элемент списка ответных реакций, который имеет одновременно и ту же функцию ответной реакции, и тот же указатель на данные клиента, будет удалён из списка ответных реакций.