Включает данную функцию обработчика в конец списка обработчиков событий.
unsigned int _ActivateHandler(FPFI handler) FPFI handler /* Добавляемый обработчик событий. */ |
Замечания
Программа _ActivateHandler( ) возвращает целочисленный идентификатор для данного обработчика. Используя этот идентификатор, вы сможете удалить соответствующий обработчик из списка обработки событий с помощью программы _DeActivateHandler( ).
Данный обработчик активизируется с двумя параметрами: дескриптором WHANDLE окна, которому принадлежит событие, и указателем типа FAR (32-разрядным) на запись события. Если ваш обработчик не выполняет поиск события или если он модифицирует событие для последующих обработчиков, он возвращает значение "ложь" (0) в знак того, что это событие должно быть передано другим обработчикам или программам интерфейса Visual FoxPro. Если обработчик определяет, что данное событие не нужно передавать дальше, он возвращает значение "истина" (целое число, отличное от 0), свидетельствующее о том, что событие было обработано.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к Visual FoxPro API..
Пример
В следующем примере обработчик событий активизируется при загрузке библиотеки. Обработчик печатает сообщение о каждом событии и предоставляет Visual FoxPro право обработать событие обычным образом. Когда библиотека разгружается, обработчик деактивизируется.
Код Visual FoxPro
Copy Code | |
---|---|
SET LIBRARY TO ACTIHAND WAIT WINDOW TO m.test TIMEOUT 5 SET LIBRARY TO |
Код C
Copy Code | |
---|---|
#include <pro_ext.h> static int HandlerID; // This is the routine that is registered as an event handler. FAR EventHandler(WHandle theWindow, EventRec FAR *ev) { _PutStr("\nEventHandler() called."); return NO; // event still needs to be handled by Visual FoxPro } FAR Activate() { HandlerID = _ActivateHandler(EventHandler); } // When the library is unloaded we must deactivate the event handler // in a CALLONUNLOAD function. FAR DeActivate() { _DeActivateHandler(HandlerID); } FoxInfo myFoxInfo[] = { {"ACTIVATE", Activate, CALLONLOAD, ""}, {"DEACTIVATE", DeActivate, CALLONUNLOAD, ""} }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Смотрите также
Справочное руководство
Процедура библиотеки API _DeActivateHandler( )Процедура библиотеки API _FindWindow( )
Процедура библиотеки API _GlobalToLocal( )
Процедура библиотеки API _MousePos( )
Обработчики событий
Функция EVENTHANDLER( )