В чем разница MessageLoop и OnEvent ? Сделал два скрипта:
И
Оба ведут себя одинаково. Когда нажимаю Кнопку 1, то пока не отработается ее функция, функция Кнопки 2 не срабатывает. И чем же тогда отличаются эти два режима?
Код:
#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 не срабатывает. И чем же тогда отличаются эти два режима?