UDF > GUI > GuiButton >


_GUICtrlButton_SetSplitInfo

Définit les informations d'un contrôle bouton scindé

#include <GuiButton.au3>
_GUICtrlButton_SetSplitInfo ( $hWnd [, $hImlGlyph = -1 [, $iSplitStyle = $BCSS_ALIGNLEFT [, $iWidth = 0 [, $iHeight = 0]]]] )

Paramètres

$hWnd ID/handle du contrôle
$hImlGlyph [optionnel] Handle de la liste d'image
$iSplitStyle [optionnel] Le style du bouton scindé. La valeur doit être un ou plusieurs des commutateurs suivants:
    $BCSS_ALIGNLEFT - Aligne l'image ou le glyphe horizontalement sur la marge gauche
    $BCSS_IMAGE - Dessine une image d'icône comme le glyphe
    $BCSS_NOSPLIT - Pas de scission
    $BCSS_STRETCH - Elargit le glyphe, mais essaye de garder le ratio
$iWidth [optionnel] Largeur du glyphe
$iHeight [optionnel] Hauteur du glyphe

Valeur de retour

Succès: Retourne True.
Échec: Retourne False.

Remarques

Cette fonction opère uniquement avec les styles de bouton $BS_SPLITBUTTON et $BS_DEFSPLITBUTTON.

Windows Vista ou une version ultérieure.

En relation

_GUICtrlButton_GetSplitInfo

Voir aussi

Consultez BCM_SETSPLITINFO dans la librairie MSDN.

Exemple

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

Global $g_hBtn, $g_idMemo, $g_hBtn2

; Notez que le handle de ces boutons ne peuvent pas être lu avec GUICtrlRead

Example()

Func Example()
    Local $hGUI, $aInfo

    $hGUI = GUICreate("Buttons", 400, 400)
    $g_idMemo = GUICtrlCreateEdit("", 10, 100, 390, 284, $WS_VSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")

    $g_hBtn = _GUICtrlButton_Create($hGUI, "Split Button", 10, 10, 120, 30, $BS_SPLITBUTTON)
    _GUICtrlButton_SetSplitInfo($g_idBtn)
    $g_hBtn2 = _GUICtrlButton_Create($hGUI, "Split Button 2", 10, 50, 120, 30, $BS_SPLITBUTTON)

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

    GUISetState(@SW_SHOW)

    $aInfo = _GUICtrlButton_GetSplitInfo($g_hBtn)
    MemoWrite("Split Info" & @CRLF & "----------------")
    For $x = 0 To 3
        MemoWrite("$ainfo[" & $x & "] = " & $aInfo[$x])
    Next
    MemoWrite("Split Info" & @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)
        Case $BCN_DROPDOWN
            MemoWrite("$BCN_DROPDOWN")
            _Popup_Menu($hCtrl)
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _Popup_Menu($hCtrl)
    Local $hMenu
    Local Enum $e_idOpen = 1000, $e_idSave, $e_idInfo
    $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hMenu, 0, "Open", $e_idOpen)
    _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Save", $e_idSave)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "Info", $e_idInfo)
    Switch _GUICtrlMenu_TrackPopupMenu($hMenu, $hCtrl, -1, -1, 1, 1, 2)
        Case $e_idOpen
            MemoWrite("Open est sélectionné")
        Case $e_idSave
            MemoWrite("Save est sélectionné")
        Case $e_idInfo
            MemoWrite("Info est sélectionné")
    EndSwitch
    _GUICtrlMenu_DestroyMenu($hMenu)
EndFunc   ;==>_Popup_Menu

; Gestionnaire de l'événement 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_hBtn2
            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 tester un clic sur le bouton
    EndSwitch
    ; Traite les commandes des messages internes AutoIt3 par défaut.
    ; Vous pouvez également modifier la ligne.
    ; !!! Mais seulement 'Return' (sans aucune valeur) ne traitera pas
    ; les messages AutoIt3 par défaut dans le futur!!!
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND