Jump to content

Recommended Posts

Posted

What is the difference between MessageLoop and OnEvent ? I made two scripts:

#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

And

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

Both behave the same. When I press Button 1, until its function is completed, the function of Button 2 does not work. So how do these two modes differ?

  • Moderators
Posted

winkot,

I suggest you read the <GUI Reference> section of the Help file which goes into some detail as to the differences between the 2 modes. Basically IMO it is down to personal choice.

You mention that you cannot interrupt a running function in either mode. This is not strictly the case - can I point you to the "Interrupting a running function" tutorial in the Wiki where you will learn just how you can do this.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Posted (edited)
2 hours ago, Melba23 said:

I suggest you read the <GUI Reference> section of the Help file

I can not find answer in my question at the Help file. In my opinion  the global difference is that OnEvent can interrupt process. And it all.

Edited by winkot
  • Moderators
Posted

winkot,

Quote

In my opinion  the global difference is that OnEvent can interrupt process

And you are wrong. I suggest you go and read both of the links I posted above. The first points to the Help file and explains the fundamental difference between the 2 modes , while the second points to the Wiki tutorial which explains how you can interrupt functions in either mode.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...