PureBasic

PostEvent()

Синтаксис

PostEvent(Event [, Window , Object [, Type [, Data]]])

Описание


Отправляет событие (оно попадает в конец внутренней очереди событий).

Параметры

Event Идентификатор события для отправки. Список событий PureBasic см. в описании WindowEvent(). При использовании пользовательского события для него можно использовать значения не меньше чем #PB_Event_FirstCustomValue, чтобы избежать конфликтов с внутренними событиями.
Window (дополн.) Номер (#Window) Окна, связанного с событием. При использовании пользовательского события это может быть любое целое число. Это значение может быть получено с помощью EventWindow().
Object (дополн.) Номер (#Object) объекта, связанного с событием. Это может быть, например Номер Гаджета или Меню. При использовании пользовательского события это может быть любое положительное целое число (включая нуль). Это значение можно получить с помощью EventGadget().
Type (дополн.) Тип, связанный с событием. При использовании пользовательского события для него можно использовать значения не меньше чем #PB_EventType_FirstCustomValue, чтобы избежать конфликтов с внутренними значениями. Это значение можно получить с помощью EventType().
Data (дополн.) Данные, связанные с событием. Этот параметр имеет действие только при использовании пользовательского события и может быть любым целым числом. Это значение можно получить с помощью функции EventData().

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

Ничего.

Комментарии

Эта команда может быть очень полезной, чтобы связаться между потоками и основным циклом событий. Например, поток может отправить пользовательское событие, когда он закончил свою обработку (со связанным data), таким образом, основной цикл получит его, и последующая обработка может быть сделана.

Пример

; Все наши пользовательские события
Enumeration #PB_Event_FirstCustomValue
    #EvenementDebutAction ; это есть минимальное значение для пользовательского события (если ниже будут конфликты).
    #EvenementFinAction
EndEnumeration

Procedure Thread(Valeur)
    PostEvent(#EvenementDebutAction, 0, 1, #PB_EventType_FirstCustomValue, 10)
    Delay(3000)
    PostEvent(#EvenementFinAction, 0, 1, #PB_EventType_FirstCustomValue, 100)
EndProcedure

OpenWindow(0, 200, 200, 100, 100, "PostEvent")

CreateThread(@Thread(), 0)

Repeat
    Event = WaitWindowEvent()

    Select Event
        Case #EvenementDebutAction
            Debug "Поток начал действовать... "
            Debug EventData()

        Case #EvenementFinAction
            Debug "Поток завершает действовать"
            Debug EventData()
    EndSelect

Until Event = #PB_Event_CloseWindow

См. также

WindowEvent(), EventWindow(), EventGadget(), EventType(), EventData()

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

Все

<- OpenWindow() - Оглавление Window - RemoveKeyboardShortcut()->