Jump to content

Difference between GuiSetState and WinSetState ?


 Share

Go to solution Solved by Melba23,

Recommended Posts

What is the difference between these two commands ?

#include <GUIConstantsEx.au3>

Opt("TrayAutoPause", 0)
Opt("TrayMenuMode", 11)
TraySetClick(16)

Global $idShow = TrayCreateItem("WinSetState")
Global $idShow1 = TrayCreateItem("GuiSetState")
TrayCreateItem("")
Global $idExit = TrayCreateItem("Exit")

#Region ### START Koda GUI section ### Form=
$WindowManager = GUICreate("Test", 320, 200)
$Button1 = GUICtrlCreateButton("Test", 1, 30, 49, 20)
$label = GUICtrlCreateLabel("Activity",1,1,150,20)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            GuiSetState(@SW_HIDE)
            ;WinSetState ($WindowManager,"",@SW_HIDE)
        Case $Button1
         GUICtrlSetData ($label, @HOUR &":" & @MIN &":" & @SEC &":"& "   " &@MSEC)
    EndSwitch

    Switch TrayGetMsg()
        Case $idExit
            Exit
        Case $idShow
            WinSetState ($WindowManager,"",@SW_SHOW)
        Case $idShow1
            GUISetState (@SW_SHOW)
    EndSwitch

WEnd

 

If you run the script and click on the x button, the window is hidden by the GuiSetState(@sw_hide).

When you restore the window over the tray menu with WinSetState command, the window opens, but the buttons stop responding ... 

Is this a bug ?

Some of my script sourcecode

Link to comment
Share on other sites

  • Moderators
  • Solution

Dan_555,

There is a fundamental difference in how the internals of AutoIt deal with the 2 commands. I had a discussion with one of the then-developers some years ago:

Dev: You don't want to use WinSetState over GUISetState on AutoIt GUI.

M23: May I ask why?

Dev: Because then the rest of the code wouldn't know the real state of the window and you will get unwanted (by AutoIt) behavior.

Which I think is a pretty definitive statement. I would go along with Andreik's suggestion above: AutoIt GUIS = GUISetState - other GUIs - WinSetState.

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

 

Link to comment
Share on other sites

Thanks Melba23 for clarification.

 

but why on earth would you mix them?

I had to restore the  window after it has been hidden and because my last script dealt with window manipulations, i used the winsetstate instead of the GuiSetState.


So when the buttons stopped working i was wondering why and discovered that is it up to these 2 commands. 

Some of my script sourcecode

Link to comment
Share on other sites

  • 4 months later...

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
 Share

  • Recently Browsing   0 members

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