Что нового

В чем разница MessageLoop и OnEvent

winkot

Новичок
Сообщения
189
Репутация
0
В чем разница MessageLoop и OnEvent ? Сделал два скрипта:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region (=== GUI generated by GuiBuilderPlus 1.3.0 ===)
Global $hGUI = GUICreate("MyGUI", 400, 350, 771, 302)

Global $Button_1 = GUICtrlCreateButton("Кнопка 1", 120, 160, 161, 41)
GUICtrlSetFont(-1, 15)
Global $Button_2 = GUICtrlCreateButton("Кнопка 2", 120, 239, 161, 41)
GUICtrlSetFont(-1, 15)
#EndRegion (=== GUI generated by GuiBuilderPlus 1.3.0 ===)


GUISetState(@SW_SHOWNORMAL)

While 1
    Switch GUIGetMsg()

        Case $Button_1
            Sleep(5000)
            Beep(500, 200)
        Case $Button_2
            Beep(1000, 100)
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd



И

Код:
Opt("GUIOnEventMode", 1)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region (=== GUI generated by GuiBuilderPlus 1.3.0 ===)
Global $hGUI = GUICreate("MyGUI", 400, 350, 771, 302)
Global $Button_1 = GUICtrlCreateButton("Кнопка 1", 120, 160, 161, 41)
GUICtrlSetFont(-1, 15)
Global $Button_2 = GUICtrlCreateButton("Кнопка 2", 120, 239, 161, 41)
GUICtrlSetFont(-1, 15)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUICtrlSetOnEvent($Button_1, "Func1")
GUICtrlSetOnEvent($Button_2, "Func2")


#EndRegion (=== GUI generated by GuiBuilderPlus 1.3.0 ===)

    GUISetState(@SW_SHOWNORMAL)

While 1
  Sleep(100)
WEnd

Func Func1()
   Sleep(5000)
  Beep(500,200)
EndFunc

Func Func2()
  Beep(1000,100)
EndFunc


Func _Exit()
    GUIDelete()
    Exit
EndFunc   ;==>_Exit


Оба ведут себя одинаково. Когда нажимаю Кнопку 1, то пока не отработается ее функция, функция Кнопки 2 не срабатывает. И чем же тогда отличаются эти два режима?
 
Верх