GUIGetMsg
Опрос GUI-окна на возникновение какого либо события.
GUIGetMsg ( [ advanced = 0 ] )
Параметры
advanced | [необязательный] Возвращает расширенную информацию в массив. 0 = (по умолчанию) Возвращает событие. 1 = возвращает массив, содержащий события и расширенную информацию. |
Возвращаемое значение
Возвращает событие, или массив в зависимости от дополнительного параметра.Событие ID | Отправка сообщения элементу управления для выполнения |
---|---|
0 | Нет событий |
$GUI_EVENT_CLOSE | Закрыть окно (либо по определённым кнопкам или системному меню). |
$GUI_EVENT_MINIMIZE | Свернуть окно. |
$GUI_EVENT_RESTORE | Восстановить окно. |
$GUI_EVENT_MAXIMIZE | Развернуть на весь экран. |
$GUI_EVENT_MOUSEMOVE | Курсор мыши переместился. |
$GUI_EVENT_PRIMARYDOWN | Левая кнопка мыши была нажата. |
$GUI_EVENT_PRIMARYUP | Левая кнопка мыши была отпущена. |
$GUI_EVENT_SECONDARYDOWN | Правая кнопка мыши была нажата. |
$GUI_EVENT_SECONDARYUP | Правая кнопка мыши была отпущена. |
$GUI_EVENT_RESIZED | Изменён размер окна. |
$GUI_EVENT_DROPPED | Выполнена операция "перетащить и бросить" (Drag&Drop). Макросы @GUI_DragId, @GUI_DragFile и @GUI_DropId используются для возврата идентификаторов / файлов соответствующим элементам. |
Примечания
Эта функция вставляет задержку эквивалентную Sleep(10), достаточную для быстрого отклика интерфейса и в тоже время снижает нагрузку на процессор, уменьшая количество вызовов в секунду при работе в цикле. Подробнее о режиме MessageLoop.См. также
TrayGetMsg, GUICreate, GUICtrlCreate..., GUICtrlRead, GUIOnEventMode (Опция), GUIEventOptions (Опция), GUIGetCursorInfo, GUICtrlSendMsg, GUICtrlSetOnEvent, GUISetOnEventПример
#include <GUIConstantsEx.au3>
Example()
;-------------------------------------------------------------------------------------
; Пример - Нажмите кнопку , чтобы увидеть значение радиокнопки
; Скрипт также проверяет изменение состояния (Закрытое/Свёрнутое/timeouts, и т.д.).
Func Example()
Local $button_1, $group_1, $iRadio_1, $iRadio_2, $iRadio_3
Local $iRadioVal1, $msg, $hGui
Opt("GUICoordMode", 1)
$hGui = GUICreate("Демонстрация Радио-кнопок", 400, 280)
; Создание элементов
$button_1 = GUICtrlCreateButton("Кнопка", 30, 20, 120, 40)
$group_1 = GUICtrlCreateGroup("Group 1", 30, 90, 165, 160)
GUIStartGroup()
$iRadio_1 = GUICtrlCreateRadio("Радио &0", 50, 120, 70, 20)
$iRadio_2 = GUICtrlCreateRadio("Радио &1", 50, 150, 60, 20)
$iRadio_3 = GUICtrlCreateRadio("Радио &2", 50, 180, 60, 20)
; Инициализация переменной, которая будет использована для отслеживания событий GUI
$iRadioVal1 = 0 ; Принимаем за 0 = первая радиокнопка выбрана, 2 = последняя радиокнопка
; Показывает GUI
GUISetState()
; В этом цикле используются переменные для отслеживания изменений состояния радиокнопок,
; другой способ заключается в использовании GUICtrlRead(), чтобы читать состояние каждого элемента
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
MsgBox(0, "", "Диалог был закрыт", 0, $hGui)
Exit
Case $msg = $GUI_EVENT_MINIMIZE
MsgBox(0, "", "Диалог свёрнут", 2, $hGui)
Case $msg = $GUI_EVENT_MAXIMIZE
MsgBox(0, "", "Диалог восстановлен", 2, $hGui)
Case $msg = $button_1
MsgBox(0, "Текущий выбор", "Радио " & $iRadioVal1, 0, $hGui)
Case $msg >= $iRadio_1 And $msg <= $iRadio_3
$iRadioVal1 = $msg - $iRadio_1
EndSelect
WEnd
EndFunc