UDF > GUI > GuiButton >


_GUICtrlButton_Create

Crée un contrôle Button

#include <GuiButton.au3>
_GUICtrlButton_Create ( $hWnd, $sText, $iX, $iY, $iWidth, $iHeight [, $iStyle = -1 [, $iExStyle = -1]] )

Paramètres

$hWnd Handle du parent ou de la fenêtre propriétaire
$sText Texte à ajouter au bouton
$iX Position horizontale du contrôle
$iY Position verticale du contrôle
$iWidth Largeur du contrôle
$iHeight Hauteur du contrôle
$iStyle [optionnel] Style du contrôle:
    $BS_AUTO3STATE - Crée une case à cocher à trois états dont le cycle est sélectionné/indisponible/effacé, chaque fois que l'utilisateur sélectionne la case à cocher.
    $BS_AUTOCHECKBOX - Crée une case à cocher dans laquelle les états commutent entre sélectionné/effacé chaque fois que l'utilisateur sélectionne la case à cocher.
    $BS_AUTORADIOBUTTON - Pareil qu'un bouton radio, sauf que lorsque l'utilisateur le sélectionne, le bouton se met automatiquement en surbrillance et supprime la sélection de tous les autres radio boutons du même style dans le même groupe.
    $BS_FLAT - Spécifie que le bouton est de dimension 2; il n'utilise pas l'ombrage par défaut pour créer une image 3-D.
    $BS_GROUPBOX - Crée un rectangle dans lequel les autres boutons peuvent être regroupées. Tout texte associé à ce style s'affiche dans le coin supérieur gauche du rectangle.
    $BS_PUSHLIKE - Construit un bouton (comme une case à cocher, case à cocher à trois états, ou un bouton radio) qui ressemble et réagit comme un bouton-poussoir. Ce bouton est soulevé quand il n'est pas poussé ou pas coché, et enfoncé quand il est poussé ou coché.

    $BS_DEFPUSHBUTTON - Crée un bouton-poussoir avec une bordure noire épaisse. Si le bouton est dans une boîte de dialogue, l'utilisateur peut sélectionner le bouton en pressant la touche ENTER, même si le bouton n'a pas le focus d'entrée. Ce style est utile pour permettre à l'utilisateur de sélectionner rapidement l'option la plus probable, ou par défaut.

    $BS_BOTTOM - Place le texte au bas du rectangle bouton.
    $BS_CENTER - Centre le texte horizontalement dans le rectangle bouton.
    $BS_LEFT - Aligne à gauche le texte dans le rectangle bouton sur le côté droit de la case à cocher.
    $BS_MULTILINE - Dispose le texte du bouton sur plusieurs lignes si la chaîne de texte est trop longue pour tenir sur une seule ligne dans le rectangle bouton.
    $BS_RIGHT - Aligne à droite le texte dans le rectangle bouton sur le côté droit de la case à cocher.
    $BS_RIGHTBUTTON - Positionn un carré de case à cocher sur le côté droit du rectangle bouton.
    $BS_TOP - Place le texte en haut du rectangle bouton.
    $BS_VCENTER - Centre verticalement le texte dans le rectangle bouton.

    $BS_ICON - Indique que le bouton doit afficher une icône.
    $BS_BITMAP - Indique que le bouton doit afficher une image bitmap.

    $BS_NOTIFY - Permet au bouton d'envoyer les messages de notification BN_KILLFOCUS et BN_SETFOCUS à sa fenêtre parente. Notez qu'un bouton envoit le message de notification BN_CLICKED indépendamment du fait qu'il a ce style. Pour obtenir les messages de notification BN_DBLCLK, le bouton doit avoir le style BS_RADIOBUTTON ou BS_OWNERDRAW.

Styles Vista:
    $BS_SPLITBUTTON - Crée un bouton scindé. Un bouton scindé a une flèche déroulante vers le bas
    $BS_DEFSPLITBUTTON - Crée un bouton scindé qui se comporte comme un bouton de style $BS_PUSHBUTTON, mais qui a également un aspect distinctif.
    $BS_COMMANDLINK - Crée un bouton de commande de lien
    $BS_DEFCOMMANDLINK - Crée un bouton de commande de lien qui se comporte comme un bouton de style $BS_PUSHBUTTON.

Default: (-1) : aucun style
Forced: $WS_CHILD, $WS_TABSTOP, $WS_VISIBLE, $BS_NOTIFY
$iExStyle [optionnel] Styles étendus du contrôle. Ils correspondent aux constantes standards $WS_EX_*. Voir Table des Styles étendus.

Valeur de retour

Succès: Retourne le handle du contrôle Button.
Échec: Retourne 0.

Remarques

Les constantes ci-dessus nécessitent #include <ButtonConstants.au3>.

Cette fonction est destinée aux utilisateurs avancés et pour apprendre comment fonctionne le contrôle.

En relation

_GUICtrlButton_Destroy

Exemple

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

Global $g_hBtn, $g_hRdo, $g_hChk, $g_idMemo

; Notez que l'ID de contrôle de ces boutons ne peut PAS être lu avec GUICtrlRead

Example()

Func Example()
    Local $hGUI

    $hGUI = GUICreate("Buttons", 400, 400)
    $g_idMemo = GUICtrlCreateEdit("", 119, 10, 276, 374, $WS_VSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")

    $g_hBtn = _GUICtrlButton_Create($hGUI, "Button1", 10, 10, 90, 50)

    $g_hRdo = _GUICtrlButton_Create($hGUI, "Radio1", 10, 60, 90, 50, $BS_AUTORADIOBUTTON)

    $g_hChk = _GUICtrlButton_Create($hGUI, "Check1", 10, 120, 90, 50, $BS_AUTO3STATE)

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    GUISetState(@SW_SHOW)

    MemoWrite("$g_hBtn handle: " & $g_hBtn)
    MemoWrite("$g_hRdo handle: " & $g_hRdo)
    MemoWrite("$g_hChk handle: " & $g_hChk & @CRLF)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

; Écrit une ligne dans le contrôle mémo
Func MemoWrite($sMessage)
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local Const $BCN_HOTITEMCHANGE = -1249
    Local $tNMBHOTITEM = DllStructCreate("hwnd hWndFrom;int IDFrom;int Code;dword dwFlags", $lParam)
    Local $nNotifyCode = DllStructGetData($tNMBHOTITEM, "Code")
    Local $nID = DllStructGetData($tNMBHOTITEM, "IDFrom")
    Local $hCtrl = DllStructGetData($tNMBHOTITEM, "hWndFrom")
    Local $iFlags = DllStructGetData($tNMBHOTITEM, "dwFlags")
    Local $sText = ""

    Switch $nNotifyCode
        Case $BCN_HOTITEMCHANGE ; Win XP et ultérieur
            If BitAND($iFlags, 0x10) = 0x10 Then
                $sText = "$BCN_HOTITEMCHANGE - En entrant: " & @CRLF

            ElseIf BitAND($iFlags, 0x20) = 0x20 Then
                $sText = "$BCN_HOTITEMCHANGE - En quittant: " & @CRLF
            EndIf
            MemoWrite($sText & _
                    "-----------------------------" & @CRLF & _
                    "WM_NOTIFY - Infos:" & @CRLF & _
                    "-----------------------------" & @CRLF & _
                    "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _
                    "CtrlID" & @TAB & ":" & $nID & @CRLF & _
                    "CtrlHWnd:" & $hCtrl & @CRLF & _
                    _GUICtrlButton_GetText($hCtrl) & @CRLF)
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

; Réaction à un clic de bouton
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    Local $hCtrl = $lParam
    Local $sText = ""

    Switch $hCtrl
        Case $g_hBtn, $g_hRdo, $g_hChk
            Switch $nNotifyCode
                Case $BN_CLICKED
                    $sText = "$BN_CLICKED" & @CRLF
                Case $BN_PAINT
                    $sText = "$BN_PAINT" & @CRLF
                Case $BN_PUSHED, $BN_HILITE
                    $sText = "$BN_PUSHED, $BN_HILITE" & @CRLF
                Case $BN_UNPUSHED, $BN_UNHILITE
                    $sText = "$BN_UNPUSHED" & @CRLF
                Case $BN_DISABLE
                    $sText = "$BN_DISABLE" & @CRLF
                Case $BN_DBLCLK, $BN_DOUBLECLICKED
                    $sText = "$BN_DBLCLK, $BN_DOUBLECLICKED" & @CRLF
                Case $BN_SETFOCUS
                    $sText = "$BN_SETFOCUS" & @CRLF
                Case $BN_KILLFOCUS
                    $sText = "$BN_KILLFOCUS" & @CRLF
            EndSwitch
            MemoWrite($sText & _
                    "-----------------------------" & @CRLF & _
                    "WM_COMMAND - Infos:" & @CRLF & _
                    "-----------------------------" & @CRLF & _
                    "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _
                    "CtrlID" & @TAB & ":" & $nID & @CRLF & _
                    "CtrlHWnd:" & $hCtrl & @CRLF & _
                    _GUICtrlButton_GetText($hCtrl) & @CRLF)
            Return 0 ; Seulement pour un test de clic sur le bouton
    EndSwitch

    ; Traite les commandes de message interne par défaut.
    ; Vous pouvez également compléter la fin de ligne.
    ; !!! Mais seulement Return (sans aucune valeur) ne traitera pas
    ; le message par défaut AutoIt3 dans le futur !!!
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND