PureBasic

BindEvent()

Синтаксис

BindEvent(Event , @Callback() [, Window [, Object [, EventType]]])

Описание


Связывает событие с процедурой обратного вызова. Это дополнительный способ обработки событий в PureBasic, он без проблем работает со стандартными командами WindowEvent() и WaitWindowEvent(). Он позволяет получать уведомления о событиях в реальном времени, поскольку процедура обратного вызова может быть вызвана сразу же после возникновения события (это полезно для ScrollBarGadget(), изменение размера Окна в реальном времени и т.д.). Удалить связь события с процедурой обратного вызова можно с помощью команды UnbindEvent().

Параметры

Event Событие, которое требуется связать с процедурой обратного вызова. Полный список событий см. в описании WindowEvent(). Пользовательские события также поддерживаются при использовании PostEvent().
@Callback() Адрес процедуры обратного вызова, которая будет вызываться при возникновении события. Она должна быть объявлена следующим образом:

Procedure EventHandler()
    ; Код процедуры
EndProcedure

В рамках процедуры обратного вызова доступны стандартные функции, такие как EventGadget(), EventWindow(), EventMenu(), EventType() и EventData(), которые позволяют получить дополнительную информацию о событии.

Примечание: функции WindowEvent() и WaitWindowEvent() никогда не должны вызываться изнутри процедуры обратного вызова, иначе программа может быть заблокирована или вести себя непредсказуемо.
Window (дополн.) Идентификационный Номер (#Window) конкретного Окна. Событие будет возникает только в том случае, если оно исходит из этого Окна. Значение #PB_All распространяет действие на все Окна (Если использовать значение #PB_All, то параметры 'Object' и 'EventType' также должны быть установлены на #PB_All).
Object (дополн.) Идентификационный Номер (#Object) конкретного объекта. Событие будет связано с этим объектом. Это может быть Номер Гаджета, Пункта меню или SysTray. Значение #PB_All распространяет действие на все объекты (Если использовать значение #PB_All, то параметр 'EventType' также должен быть установлен на #PB_All)
EventType (дополн.) Тип события, используемый при связывании события с процедурой обратного вызова. Полный список поддерживаемых типов см. в описании функции EventType(). Можно использовать значение #PB_All, чтобы связать событие любого типа с процедурой обратного вызова.

Возвращаемое значение

Ничего.

Пример

Procedure SizeWindowHandler()
    Debug "Событие изменения размера в Окне #" + EventWindow()

    ; Изменяет размер Гаджета, чтобы он соответствовал новым размерам Окна.
    ;
    ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowWidth(EventWindow())-20, WindowHeight(EventWindow())-20)
EndProcedure

OpenWindow(0, 100, 100, 200, 200, "Live resize test", #PB_Window_SizeGadget | #PB_Window_SystemMenu)
EditorGadget(0, 10, 10, 180, 180)

BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())

Repeat
    Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

См. также

BindGadgetEvent(), BindMenuEvent(), UnbindEvent(), WindowEvent(), WaitWindowEvent()

Поддерживаемые OS

Все

<- AddWindowTimer() - Оглавление Window - CloseWindow()->