↑  ←  Описание функции


_GUICtrlButton_GetState

Определяет состояние кнопки или checkbox

#include <GuiButton.au3>
_GUICtrlButton_GetState($hWnd)

Параметры

$hWnd Дескриптор или идентификатор элемента

Возвращаемое значение

Успех: Возвращает текущее состояние кнопки. Это может быть комбинацией следующих значений, которые можно извлечь с помощью BitAND:
        $BST_CHECKED - Указывает, что кнопка отмечена галочкой.
        $BST_FOCUS - Определяет состояние фокуса. Ненулевое значение указывает, что кнопка имеет фокус.
        $BST_INDETERMINATE - Третье состояние кнопки, указывающее неопределённое состояние (применяется только когда кнопка имеет стиль $BS_3STATE или $BS_AUTO3STATE).
        $BST_PUSHED - Указывает вдавленную кнопку. Ненулевое значение указывает, что кнопка вдавленная.
        Такой вид кнопка приобретает, когда пользователь помещает курсор над ней, нажимает и удерживает левую кнопку мыши. Такой вид кнопки убирается, когда пользователь отпускает кнопку мыши.
        $BST_UNCHECKED - Указывает, что кнопка не отмечена галочкой. Аналогично, если возвращаемое значение равно нулю.

См. также

_GUICtrlButton_SetState, _GUICtrlButton_GetCheck, _GUICtrlButton_SetCheck

См. также

Искать BM_GETSTATE в библиотеке MSDN

Пример

#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <WindowsConstants.au3>

Global $iMemo

_Main()

Func _Main()
    Local $rdo, $rdo2, $chk, $chk2, $chk3, $btn, $btn2

    GUICreate("Определяет состояние кнопки", 400, 400)
    $iMemo = GUICtrlCreateEdit("", 119, 10, 276, 374, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")

    $btn = GUICtrlCreateButton("Кнопка1", 10, 10, 90, 25)
    _GUICtrlButton_SetState($btn)

    $btn2 = GUICtrlCreateButton("Кнопка2", 10, 60, 90, 25)

    $rdo = GUICtrlCreateRadio("Радио1", 10, 110, 90, 25)
    _GUICtrlButton_SetFocus($rdo)

    $rdo2 = GUICtrlCreateRadio("Радио2", 10, 170, 90, 25)
    _GUICtrlButton_SetCheck($rdo2)

    $chk = GUICtrlCreateCheckbox("Check1", 10, 230, 90, 25, BitOR($BS_AUTO3STATE, $BS_NOTIFY))
    _GUICtrlButton_SetCheck($chk, $BST_INDETERMINATE)

    $chk2 = GUICtrlCreateCheckbox("Check2", 10, 290, 90, 25, BitOR($BS_AUTO3STATE, $BS_NOTIFY))

    $chk3 = GUICtrlCreateCheckbox("Check3", 10, 350, 90, 25, BitOR($BS_AUTO3STATE, $BS_NOTIFY))
    _GUICtrlButton_SetCheck($chk3, $BST_CHECKED)

    GUISetState()

    MemoWrite("Состояние Кнопка1:" & @CRLF & "--------------------------------" & _
            _ExplainState(_GUICtrlButton_GetState($btn), True))
    MemoWrite("Состояние Кнопка2:" & @CRLF & "--------------------------------" & _
            _ExplainState(_GUICtrlButton_GetState($btn2), True))
    MemoWrite("Состояние Радио1: " & @CRLF & "--------------------------------" & _
            _ExplainState(_GUICtrlButton_GetState($rdo)))
    MemoWrite("Состояние Радио2: " & @CRLF & "--------------------------------" & _
            _ExplainState(_GUICtrlButton_GetState($rdo2)))
    MemoWrite("Состояние Check1: " & @CRLF & "--------------------------------" & _
            _ExplainState(_GUICtrlButton_GetState($chk)))
    MemoWrite("Состояние Check2: " & @CRLF & "--------------------------------" & _
            _ExplainState(_GUICtrlButton_GetState($chk2)))
    MemoWrite("Состояние Check3: " & @CRLF & "--------------------------------" & _
            _ExplainState(_GUICtrlButton_GetState($chk3)))

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd

    Exit
EndFunc   ;==>_Main

; Записывает строку в элемент для заметок
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

Func _ExplainState($iState, $fPushButton = False)
    Local $sText = ""
    If Not $fPushButton And Not $iState Then Return _
            @CRLF & "Очищено. Тоже, что значение 0." & @CRLF
    If BitAND($iState, $BST_CHECKED) = $BST_CHECKED Then _
            $sText &= @CRLF & "Отмечено." & @CRLF
    If BitAND($iState, $BST_FOCUS) = $BST_FOCUS Then _
            $sText &= @CRLF & "Фокус. Ненулевое значение указывает, что кнопка имеет фокус ввода." & @CRLF
    If BitAND($iState, $BST_INDETERMINATE) = $BST_INDETERMINATE Then _
            $sText &= @CRLF & "Третье состояние, серое, не определено." & @CRLF
    If $fPushButton Then
        If BitAND($iState, $BST_PUSHED) = $BST_PUSHED Then
            $sText &= @CRLF & "Вдавлена." & @CRLF
        Else
            $sText &= @CRLF & "Не вдавлена." & @CRLF
        EndIf
    EndIf
    Return $sText
EndFunc   ;==>_ExplainState