Jump to content
Sign in to follow this  
SlimShady

GUICtrlSetOnEvent

Recommended Posts

SlimShady

I tried it out and the function doesn't work.

Even the example in the help file doesn't work:

#include <GUIConstants.au3>

Opt("GUICoordMode",2)
Opt("GuiResizeMode", 1)

$parent1 = GuiCreate("Parent1")

$ok1 = GUICtrlCreateButton ("OK",  10, 30, 50)
GUICtrlSetOnEvent(-1, "OKPressed")

$cancel1 = GUICtrlCreateButton ( "Cancel",  0, -1)
GUICtrlSetOnEvent(-1, "CancelPressed")

GuiSetState(@SW_SHOW)


Do
    $msg = GuiGetMsg(1)       ; Get extra info in an array
Until $msg[0] = $GUI_EVENT_CLOSE


Func OKPressed()
    MsgBox(0, "OK Pressed", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE & " CtrlHandle=" & @GUI_CTRLHANDLE)
EndFunc

Func CancelPressed()
    MsgBox(0, "Cancel Pressed", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE & " CtrlHandle=" & @GUI_CTRLHANDLE)
EndFunc

Share this post


Link to post
Share on other sites
jpm

I tried it out and the function doesn't work.

Even the example in the help file doesn't work:

#include <GUIConstants.au3>

Opt("GUICoordMode",2)
Opt("GuiResizeMode", 1)

$parent1 = GuiCreate("Parent1")

$ok1 = GUICtrlCreateButton ("OK",  10, 30, 50)
GUICtrlSetOnEvent(-1, "OKPressed")

$cancel1 = GUICtrlCreateButton ( "Cancel",  0, -1)
GUICtrlSetOnEvent(-1, "CancelPressed")

GuiSetState(@SW_SHOW)
Do
    $msg = GuiGetMsg(1)      ; Get extra info in an array
Until $msg[0] = $GUI_EVENT_CLOSE
Func OKPressed()
    MsgBox(0, "OK Pressed", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE & " CtrlHandle=" & @GUI_CTRLHANDLE)
EndFunc

Func CancelPressed()
    MsgBox(0, "Cancel Pressed", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE & " CtrlHandle=" & @GUI_CTRLHANDLE)
EndFunc

<{POST_SNAPBACK}>

You need now to add a Opt("GuiOnEvent"Mode, 1) to allow onevent to be called :)

Share this post


Link to post
Share on other sites
SlimShady

Suggestion: add that to the help file, in the Remarks section of the function.

Share this post


Link to post
Share on other sites
Valik

Suggestion: add that to the help file, in the Remarks section of the function.

<{POST_SNAPBACK}>

Suggestion: Follow the development threads if you intend to use the beta and you'll see that Jon has already stated he hasn't updated the docs yet with those changes.

Edit: See.

Edited by Valik

Share this post


Link to post
Share on other sites
SlimShady

Allright I added AutoItSetOption("GUIOnEventMode", 1) and the function works as expected but the rest of my script stops working.

So I commented out all GUICtrlSetOnEvent() functions.

My script was still not working. So I commented out AutoItSetOption("GUIOnEventMode", 1) and my script works fine now.

I'm gonna try to make a sample script that shows this problem.

Share this post


Link to post
Share on other sites
this-is-me

You can't have AutoItSetOption("GUIOnEventMode", 1) and a GuiGetMsg loop, I don't think. I believe it is one or the other.

Edited by this-is-me

Who else would I be?

Share this post


Link to post
Share on other sites
SlimShady

Oh didn't know that :)

I made a test script that shows my problems exactly.

Download below:

Share this post


Link to post
Share on other sites
Jon

One or the other.

Everything would get out of sync otherwise so the OnEvent mode turns off GuiGetMsg (it just returns 0 all the time). All other methods of having them both active that I thought about ended up with sync problems (GuiGetMsg not reacting to a close message quick enough and then Events still fireing afterwards that used OnEvent).

Share this post


Link to post
Share on other sites
SlimShady

OK. Thanks for clearing that up.

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.