Functions > GUI > GUISetParameters >


GUISetAccelerators

Définit la table des accélérateurs à utiliser dans une GUI.

GUISetAccelerators ( accelerators [, winhandle] )

Paramètres

accelerators Tableau à deux dimensions contenant la table des accélérateurs (Voir Remarques).
winhandle [optionnel] Handle Windows retourné par GUICreate() (par défaut, la fenêtre précédemment utilisée).

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0.

Remarques

Les touches accélératrices sont semblables aux HotKeys, mais il y a deux différences importantes:

    - 1. Elles ne sont actives que si la GUI spécifiée dans la fonction est active, ce qui signifie que, contrairement aux HotKeys, les touches Accelerator n'interféreront pas avec les autres applications en cours d'exécution.

    - 2. Elles ne peuvent pas déclencher une fonction directement - elles actionnent leur contrôle associé qui déclenche alors la fonction en utilisant GUIGetMsg() ou GUICtrlSetOnEvent(). S'il n'y a pas de contrôle approprié disponible dans la GUI, un contrôle Dummy peut être créé en utilisant GUICtrlCreateDummy.

Le tableau passé en paramètre à cette fonction contient les touches Accelerators et les ControlIDs des contrôles associés. Le tableau doit être défini comme Local/Global $aArray[n][2] - où n est le nombre de raccourcis clavier à définir:
    $aArray[0][0] = Premier raccourci clavier (dans le format HotKeySet()) du 1er accélérateur
    $aArray[0][1] = ID du contrôle associé au 1er accélérateur, tel que retourné par GUICtrlCreate...
    $aArray[1][0] = Raccourci du 2e accélérateur
    $aArray[1][1] = ID du contrôle associé au 2ème accélérateur
    ...
    $aArray[n][0] = Raccourci du n-ième accélérateur
    $aArray[n][1] = ID du contrôle associé au n-ième accélérateur


En passant à cette fonction un paramètre autre qu'un tableau aura pour effet d'annuler tous les accélérateurs pour un handle Windows donné.

En relation

GUICreate, HotKeySet

Exemple

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

Example()

Func Example()
    GUICreate("Custom MsgBox", 225, 80)

    GUICtrlCreateLabel("SVP, sélectionnez un bouton.", 10, 10)
    Local $idYes = GUICtrlCreateButton("Oui", 10, 50, 65, 25)
    Local $idNo = GUICtrlCreateButton("Non", 80, 50, 65, 25)
    Local $idExit = GUICtrlCreateButton("Quitter", 150, 50, 65, 25)

    ; Définit les GUIAccelerators pour les controlIDs des boutons, à savoir Ctrl+o et Ctrl+n
    Local $aAccelKeys[2][2] = [["^o", $idYes],["^n", $idNo]]
    GUISetAccelerators($aAccelKeys)

    GUISetState(@SW_SHOW) ; Affiche la GUI.

    Local $idMsg
    Do
        $idMsg = GUIGetMsg()
        Switch $idMsg
            Case $idYes
                ; Affiche si le bouton a été sélectionné ou la combinaison de touches Ctrl+o a été pressée
                MsgBox($MB_SYSTEMMODAL, "Bouton sélectionné", "Oui")

            Case $idNo
                ; Affiche si le bouton a été sélectionné ou la combinaison de touches Ctrl+n a été pressée
                MsgBox($MB_SYSTEMMODAL, "Bouton sélectionné", "Non")
        EndSwitch
    Until ($idMsg = $GUI_EVENT_CLOSE) Or ($idMsg = $idExit)

    if $idMsg = $GUI_EVENT_CLOSE Then
         MsgBox($MB_SYSTEMMODAL, "Bouton sélectionné", "Close")
    Else
         MsgBox($MB_SYSTEMMODAL, "Bouton sélectionné", "Quitter")
    EndIf

    GUIDelete() ; Supprime la GUI.
EndFunc   ;==>Example