# Function Reference

# GUICtrlSetState

Changes the state of a control.

GUICtrlSetState ( controlID, state )

## Parameters

controlID | The control identifier (controlID) as returned by a GUICtrlCreate...() function, or -1 for the last created control.
state | See the State table below.

## Return Value

Success: | 1.
Failure: | 0.

## Remarks

State table

State | Comments
--- | ---
$GUI_CHECKED (1) | Radio, Checkbox, MenuItem or ListViewItem will be checked.
$GUI_INDETERMINATE (2) | Checkbox having the tristate attribute will be greyed.
$GUI_UNCHECKED (4) | Radio, Checkbox, MenuItem or ListViewItem will be unchecked.
$GUI_DROPACCEPTED (8) | Control will accept drop action : from file or from a drag of another control. See remarks.
$GUI_SHOW (16) | Control will be visible. On Tabitem control will select the first tab to be displayed.
$GUI_HIDE (32) | Control will not be visible.
$GUI_ENABLE (64) | Control will be enabled.
$GUI_DISABLE (128) | Control will be greyed out.
$GUI_FOCUS (256) | Control will be given input/selected focus.
$GUI_DEFBUTTON (512) | Control will be set as the default button on the window. See remark about TreeviewItems.
$GUI_EXPAND (1024) | TreeViewItem will expand its child items.
$GUI_ONTOP (2048) | Control will be have the ontop attribute for the window (zOrdering).
$GUI_NODROPACCEPTED (4096) | Control will not accept drop action.
$GUI_NOFOCUS (8192) | Listview control will loose focus.
$GUI_AVISTART (0) | Avi control will start playing.
$GUI_AVISTOP (1) | Avi control will stop playing.
$GUI_AVICLOSE (2) | Avi control will stop playing and release resource.

State values can be summed up as for example $GUI_DISABLE (128) + $GUI_HIDE (32) sets the control in an disabled and hidden state.
If an AVI control has to be hidden with $GUI_HIDE (32) it should be closed with $GUI_AVICLOSE (1).
State of a "contextmenu" control cannot be changed.
State of a "listviewitem" control can be changed if the associated "listview" control has been created with an extended style $LVS_EX_CHECKBOXES. $GUI_FOCUS (256) and $GUI_NOFOCUS (8192) can be used on specific listviewitem provided listview control style allows to display it : $LVS_SHOWSELALWAYS.
State of a "menu or a ""menuitem" control cannot be hidden.
! Important information for $GUI_EXPAND: this state is only used for TreeViewItems. If you want to use this 'action' then at least 1 Sub-TreeViewItem has to exist/created under this item !
If you want to select another item in a TreeView then you can use $GUI_FOCUS (256) - the parent TreeView gets the window focus and the specified item is marked as selected.
If you want to set a treeview item as a default item which means painting it bold you can use $GUI_DEFBUTTON (512) - to turn it off just use another value but $GUI_DEFBUTTON (512), for instance 0. This state will not be returned by GUICtrlGetState().
If $GUI_DROPACCEPTED (8) is set to a visible control a drag & drop can be taken in account. The edit/input control will be set with the filename.
For other controls on reception of $GUI_EVENT_DROPPED, @GUI_DragId will return the controlID from where the drag start (-1 if from a file, @GUI_DragFile contain the filename being dropped) and @GUI_DropId returns the controlID of the dropped control.
Only dragging a ListviewItem will start the drag & drop process. The @GUI_DragId will be the ListView controlID.

## Related

GUICtrlCreate..., GUICtrlGetState

## Example

    #include <GUIConstantsEx.au3>
    #include <WindowsStylesConstants.au3>

    Example()

    Func Example()
        ; Create a GUI with various controls.
        Local $hGUI = GUICreate("Example", 420, 200, -1, -1, -1, $WS_EX_ACCEPTFILES)

        ; Create a label and set the state as drop accepted.
        Local $idLabel = GUICtrlCreateLabel("Drop a file on this label.", 10, 10, 400, 40, $WS_BORDER)
        GUICtrlSetState($idLabel, $GUI_DROPACCEPTED)

        ; Create an input and set the state as drop accepted.
        Local $idInput = GUICtrlCreateInput("", 10, 60, 400, 22)
        GUICtrlSetState($idInput, $GUI_DROPACCEPTED)

        Local $idButton_OK = GUICtrlCreateButton("OK", 310, 170, 85, 25)

        ; Display the GUI.
        GUISetState(@SW_SHOW, $hGUI)

        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE, $idButton_OK
                    ExitLoop

                Case $GUI_EVENT_DROPPED
                    ; If the value of @GUI_DropId is $idLabel, then set the label of the dragged file.
                    If @GUI_DropId = $idLabel Then GUICtrlSetData($idLabel, @GUI_DragFile)

            EndSwitch
        WEnd

        ; Delete the previous GUI and all controls.
        GUIDelete($hGUI)
    EndFunc   ;==>Example