Functions > GUI >


GUIGetMsg

Interroge la GUI pour savoir si des événements ont été déclenchés.

GUIGetMsg ( [advanced = 0] )

Paramètre

advanced [optionnel] Faut-il retourner des informations supplémentaires dans un tableau.
    $GUI_EVENT_SINGLE (0) = (par défaut) Retourne un événement unique.
    $GUI_EVENT_ARRAY (1) = retourne un tableau contenant l'événement et des informations complémentaires.

Les constantes sont définies dans GUIConstantsEx.au3.

Valeur de retour

Retourne un événement, ou un tableau selon le paramètre "advanced".

L'événement retourné est l'ID du contrôle qui envoie le message, ou un événement spécial (comme la fermeture d'une fenêtre, ou une fenêtre minimisé). Ou, s'il n'y a pas de message, l'événement est égal à 0.


ID de l'événement: ID du contrôle qui a envoyé le message
0: Aucun évènement
$GUI_EVENT_CLOSE: Boîte de dialogue fermée (par bouton défini, ou par menu système).
$GUI_EVENT_MINIMIZE: Boîte de dialogue minimisée avec le menu système.
$GUI_EVENT_RESTORE: Boîte de dialogue restaurée par clic sur l'icône de la barre de tâche.
$GUI_EVENT_MAXIMIZE: Boîte de dialogue maximisée avec le menu système.
$GUI_EVENT_MOUSEMOVE: Le curseur de la souris s'est déplacé.
$GUI_EVENT_PRIMARYDOWN: Le bouton principal de la souris a été enfoncé.
$GUI_EVENT_PRIMARYUP: Le bouton principal de la souris a été relâché.
$GUI_EVENT_SECONDARYDOWN: Le bouton secondaire de la souris a été enfoncé.
$GUI_EVENT_SECONDARYUP: Le bouton secondaire de la souris a été relâché.
$GUI_EVENT_RESIZED: La boîte de dialogue a été redimensionnée.
$GUI_EVENT_DROPPED: Fin d'une action glisser-déposer, @GUI_DragId, @GUI_DragFile et @GUI_DropId seront utilisés pour récupérer de l'ID/fichier du contrôle impliqué.

Les constantes sont définies dans GUIConstantsEx.au3.


Lorsque vous utilisez le paramètre "advanced" les informations sont retournées dans un tableau avec des informations complémentaires:
   [0] = 0 ou l'ID de l'événement ou l'ID du contrôle
   [1] = Le handle de la fenêtre où l'événement s'est déclenché
   [2] = Le handle du contrôle où l'événement s'est déclenché (le cas échéant)
   [3] = L'abscisse X du curseur de la souris (relative à la fenêtre GUI)
   [4] = L'ordonnée Y du curseur de la souris (relative à la fenêtre GUI)


Si l'option GUIOnEventMode est définie à 1, alors le retour de GUIGetMsg est toujours 0 et @error est mis à 1.

Si l'option GUIEventOptions est définie à 1, les boutons minimise, restaure et maximise n'auront aucun effet sur la fenêtre, juste une simple notification.

Remarques

Cette fonction ralentit automatiquement le CPU lorsque cela est nécessaire de sorte qu'elle peut être utilisée sans danger en boucles serrées sans monopoliser tous les CPU.

Les informations sur la position de la souris et sur le contrôle survolé peuvent être obtenues avec GUIGetCursorInfo(). Aucun événement n'est déclenché lorsque la souris est sur un contrôle donc GUIGetCursorInfo() doit être appelée pour obtenir le controlID.

En relation

GUICreate, GUICtrlCreate..., GUICtrlRead, GUICtrlSendMsg, GUICtrlSetOnEvent, GUIEventOptions (Option), GUIGetCursorInfo, GUIOnEventMode (Option)

Exemples

Exemple 1

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

; Exemple - Appuyez sur le bouton pour voir la valeur des boutons radio
; Le script détecte également les changements d'état (fermé/minimisé/délai d'attente, etc).
Func Example()
    Opt("GUICoordMode", 1)

    GUICreate("Radio Box Demo", 400, 280)

    ; Crée les contrôles
    Local $idButton_1 = GUICtrlCreateButton("B&utton 1", 30, 20, 120, 40)
    GUICtrlCreateGroup("Group 1", 30, 90, 165, 160)
    GUIStartGroup()
    Local $idRadio_1 = GUICtrlCreateRadio("Radio &0", 50, 120, 70, 20)
    GUICtrlCreateRadio("Radio &1", 50, 150, 60, 20)
    Local $idRadio_3 = GUICtrlCreateRadio("Radio &2", 50, 180, 60, 20)

    ; Initialise les variables que nous allons utiliser pour garder une trace des événements de la GUI
    Local $iRadioVal1 = 0 ; Nous supposerons que 0 = premier bouton radio sélectionné, 2 = dernier bouton

    ; Affiche la GUI
    GUISetState(@SW_SHOW)

    ; Dans cette boucle de message, nous utilisons des variables pour garder une trace des changements apportés aux radioBoutons,  une autre
    ; façon serait d'utiliser GUICtrlRead() à la fin de la lecture de l'état de chaque contrôle
    Local $idMsg = GUIGetMsg()

    While $idMsg <> $GUI_EVENT_CLOSE
       
        Select
            Case $idMsg = $GUI_EVENT_MINIMIZE
                MsgBox($MB_SYSTEMMODAL, "", "Dialogue minimisé", 2)

            Case $idMsg = $GUI_EVENT_MAXIMIZE
                MsgBox($MB_SYSTEMMODAL, "", "Dialogue restauré", 2)

            Case $idMsg = $idButton_1
                MsgBox($MB_SYSTEMMODAL, "", "Bouton par défaut cliqué:" & @CRLF & "Radio " & $iRadioVal1)

            Case $idMsg >= $idRadio_1 And $idMsg <= $idRadio_3
                $iRadioVal1 = $idMsg - $idRadio_1

        EndSelect
        $idMsg = GUIGetMsg()
    WEnd
    
    MsgBox($MB_SYSTEMMODAL, "", "Dialogue clos")

    GUIDelete()
EndFunc   ;==>Example


Exemple 2

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Crée une GUI
    Local $hGUI1 = GUICreate("Example GUI1")
    ; Crée un bouton
    Local $idButton1 = GUICtrlCreateButton("Button1", 10, 10, 80, 22)
    ; Affiche la GUI
    GUISetState(@SW_SHOW, $hGUI1)

    ; Crée une autre GUI
    Local $hGUI2 = GUICreate("Example GUI2", 300, 300)
    ; Crée un bouton
    Local $idButton2 = GUICtrlCreateButton("Button2", 10, 10, 80, 22)
    ; Affiche la GUI
    GUISetState(@SW_SHOW, $hGUI2)

    ; Variable locale tableau pour des messages avancés
    Local $aMsg = 0

    Do
        ; Assigne à $aMsg les messages GUI avancés.
        $aMsg = GUIGetMsg(1)

        ; Selon la GUI
        Switch $aMsg[1]
            Case $hGUI1 ; L'événement provient de la GUI1
                If $aMsg[0] = $idButton1 Then
                    MsgBox($MB_SYSTEMMODAL, "", "Bouton1 cliqué.")
                EndIf

            Case $hGUI2 ; L'événement provient de la GUI2
                ; Selon l'ID de l'événement
                Switch $aMsg[0]
                    Case $GUI_EVENT_CLOSE
                        GUIDelete($hGUI2)
                    Case $idButton2
                        MsgBox($MB_SYSTEMMODAL, "", "Button2 cliqué.")
                EndSwitch
        EndSwitch
    Until ($aMsg[1] = $hGUI1) And ($aMsg[0] = $GUI_EVENT_CLOSE)

    ; Supprime la GUI principale
    GUIDelete($hGUI1)
EndFunc   ;==>Example