Funktionreferenz


_GUICtrlButton_Create

Beschreibung anzeigen in

Erstellt ein Button-Control

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

Parameter

$hWnd Handle zum Eltern- oder Besitzerfenster
$sText Text des Buttons
$iX Horizontale Position des Controls
$iY Vertikale Position des Controls
$iWidth Breite des Controls
$iHeight Höhe des Controls
$iStyle [optional] Stile des Controls:
    $BS_AUTO3STATE - Erstellt eine 3-Status-Checkbox, in welcher sich der Status mit jedem Klick auf die Checkbox zwischen markiert, nicht verfügbar und nicht markiert ändert.
    $BS_AUTOCHECKBOX - Erstellt eine Checkbox, in welcher sich der Status mit jedem Klick auf die Checkbox zwischen markiert und nicht markiert ändert.
    $BS_AUTORADIOBUTTON - Entspricht dem Radiobutton mit dem Unterschied, dass wenn der Benutzer den Button auswählt, er automatisch hervorgehoben wird und alle anderen Radiobuttons in der selben Gruppe mit dem selben Stil die Markierung verlieren.
    $BS_FLAT - Legt fest, dass der Button 2-dimensional ist. Es wird nicht der Standardschatten benutzt, um ein 3D-Bild zu erstellen.
    $BS_GROUPBOX - Erstellt ein Rechteck, in welchem andere Buttons gruppiert werden können. Der mit diesem Stil verbundene Text wird in der oberen linken Ecke des Rechtecks dargestellt.
    $BS_PUSHLIKE - Erstellt einen Button (wie z. B. eine Checkbox, 3-Status-Checkbox oder Radiobutton), welcher so aussieht und so agiert wie ein "Push"-Button. Der Button sieht erhaben aus, wenn er nicht gedrückt oder markiert ist und versenkt, wenn er gedrückt oder markiert ist.
    $BS_DEFPUSHBUTTON - Erstellt einen "Push"-Button mit einem dicken schwarzen Rand. Falls sich der Button in einer Dialogbox befindet, kann der Benutzer den Button durch Drücken der ENTER-Taste auswählen, auch wenn der Button nicht den Eingabefokus besitzt. Dieser Stil ist hilfreich für das Aktivieren des Standards oder der meist verwendeten Option.
    $BS_BOTTOM - Platziert den Text unten im Rechteck des Buttons.
    $BS_CENTER - Zentriert den Text horizontal im Rechteck des Buttons.
    $BS_LEFT - Richtet den Text linksbündig im Rechteck des Buttons auf der rechten Seite der Checkbox aus.
    $BS_MULTILINE - Umhüllt den Text des Buttons, um mehrere Zeilen zu erzeugen, falls der Textstring zu lang ist, um ihn in einer einzelnen Zeile in dem Rechteck des Buttons einzupassen.
    $BS_RIGHT - Richtet den Text rechtsbündig im Rechteck des Buttons auf der rechten Seite der Checkbox aus.
    $BS_RIGHTBUTTON - Positioniert ein Checkbox-Viereck auf der rechten Seite des Rechtecks des Buttons.
    $BS_TOP - Platziert den Text oben im Rechteck des Buttons.
    $BS_VCENTER - Zentriert den Text vertikal im Rechteck des Buttons.
    $BS_ICON - Legt fest, dass der Button ein Icon anzeigen soll.
    $BS_BITMAP - Legt fest, dass der Button eine Bitmap anzeigen soll.
    $BS_NOTIFY - Aktiviert einen Button, um eine BN_KILLFOCUS- und BN_SETFOCUS-Benachrichtigung an dessen parent-Fenster zu senden. Es ist zu beachten, dass Buttons die BN_CLICKED-Benachrichtigung senden, egal ob sie diesen Stil besitzen oder nicht. Um die BN_CLICKED-Benachrichtigung zu erhalten, muss der Button den BS_RADIOBUTTON- oder BS_OWNERDRAW-Stil besitzen.

Stile von Vista:
    $BS_SPLITBUTTON - Erstellt einen "Split"-Button. Ein "Split"-Button hat einen Dropdown-Pfeil
    $BS_DEFSPLITBUTTON - Erstellt einen "Split"-Button, welcher sich wie ein Button mit dem Stil $BS_PUSHBUTTON verhält, aber auch eine auffällige Erscheinung besitzt.
    $BS_COMMANDLINK - Erstellt einen Befehlszeilenbutton
    $BS_DEFCOMMANDLINK - Erstellt einen Befehlszeilenbutton, welcher sich wie ein Button mit dem Stil $BS_PUSHBUTTON verhält.

Standard: ( -1) : nichts
Erzwungen : $WS_CHILD, $WS_TABSTOP, $WS_VISIBLE, $BS_NOTIFY
$iExStyle [optional] Erweiterte Stile des Controls. Diese entsprechen den Standard-$WS_EX_*>-Konstanten. Siehe Tabelle Erweiterte Stile.

Rückgabewert

Erfolg: das Handle zu dem Button-Control
Fehler: 0

Bemerkungen

Die obigen Konstanten benötigen #include <ButtonConstants.au3>.

Diese Funktion ist für fortgeschrittene Benutzer und zum Lernen, wie Controls arbeiten, gedacht.

- - - - - - - - Erklärung der Controls - - - - - - - -

Verwandte Funktionen

_GUICtrlButton_Destroy

Beispiel

#include <Extras\WM_NOTIFY.au3>
#include <GuiButton.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

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

; Es ist zu beachten, dass das Handle dieser Buttons NICHT mit GUICtrlRead gelesen werden kann

Example()

Func Example()
    Local $hGUI = GUICreate("Button-Erstellung (v" & @AutoItVersion & ")", 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")
    _WM_NOTIFY_Register($g_idMemo)

    GUISetState(@SW_SHOW)

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

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

    Exit
EndFunc   ;==>Example


; Gibt eine Zeile im Memo-Fenster aus
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 $tagNMBHOTITEM = $tagNMHDR & ";dword dwFlags"
    Local $tNMBHOTITEM = DllStructCreate($tagNMBHOTITEM, $lParam)
    Local $iCode = DllStructGetData($tNMBHOTITEM, "Code")
    Local $hWndFrom = DllStructGetData($tNMBHOTITEM, "hWndFrom")
    Local $iFlags = DllStructGetData($tNMBHOTITEM, "dwFlags")
    Local $sText = ""

    Switch $iCode
        Case $BCN_HOTITEMCHANGE ; Win XP und höher
            $sText = "Text=" & _GUICtrlButton_GetText($hWndFrom)
            If BitAND($iFlags, 0x10) = 0x10 Then
                _WM_NOTIFY_DebugEvent("$BCN_HOTITEMCHANGE - beim Ankommen", $tagNMBHOTITEM, $lParam, "IDFrom", $sText)
            ElseIf BitAND($iFlags, 0x20) = 0x20 Then
                _WM_NOTIFY_DebugEvent("$BCN_HOTITEMCHANGE - beim Verlassen", $tagNMBHOTITEM, $lParam, "IDFrom", $sText)
            EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

; Reaktion auf einen Button-Klick
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg
    Local $iCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $sCode, $sText

    Switch $hCtrl
        Case $g_hBtn, $g_hRdo, $g_hChk
            Switch $iCode
                Case $BN_CLICKED
                    $sCode = "$BN_CLICKED"
                Case $BN_PAINT
                    $sCode = "$BN_PAINT"
                Case $BN_PUSHED
                    $sCode = "$BN_PUSHED"
                Case $BN_HILITE
                    $sCode = "$BN_HILITE"
                Case $BN_UNPUSHED
                    $sCode = "$BN_UNPUSHED"
                Case $BN_UNHILITE
                    $sCode = "$BN_UNHILITE"
                Case $BN_DISABLE
                    $sCode = "$BN_DISABLE"
                Case $BN_DBLCLK
                    $sCode = "$BN_DBLCLK"
                Case $BN_DOUBLECLICKED
                    $sCode = "$BN_DOUBLECLICKED"
                Case $BN_SETFOCUS
                    $sCode = "$BN_SETFOCUS"
                Case $BN_KILLFOCUS
                    $sCode = "$BN_KILLFOCUS"
            EndSwitch
            $sText = "Text=" & _GUICtrlButton_GetText($hCtrl)
            _WM_NOTIFY_DebugEvent($sCode, $tagNMHDR, $lParam, "IDFrom", $sText)
            Return 0 ; Nur bei Klick auf den Button
    EndSwitch
    ; Setzt die Standardverarbeitung der Autoit3-internen Nachrichtenkommandos fort.
    ; Man kann die Zeile auch weglassen.
    ; !!! Aber nur 'Return' (ohne jegliche Variable) wird die Verarbeitung der Standardnachrichten unterbinden !!!
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND