UDF > GUI > GuiComboBoxEx >


_GUICtrlComboBoxEx_Create

Crée un contrôle ComboBoxEx

#include <GuiComboBoxEx.au3>
_GUICtrlComboBoxEx_Create ( $hWnd, $sText, $iX, $iY [, $iWidth = 100 [, $iHeight = 200 [, $iStyle = 0x00200002 [, $iExStyle = 0x00000000]]]] )

Paramètres

$hWnd Handle du parent ou du propriétaire de la fenêtre
$sText Texte délimité à ajouter à la ComboBox
$iX Position horizontale du contrôle
$iY Position verticale du contrôle
$iWidth [optionnel] Largeur du contrôle
$iHeight [optionnel] Hauteur du contrôle
$iStyle [optionnel] Style du contrôle:
    $CBS_DROPDOWN - Similaire à $CBS_SIMPLE, sauf que la liste n'est pas affichée à moins que l'utilisateur sélectionne une icône à côté du champ de saisie
    $CBS_DROPDOWNLIST - Similaire à $CBS_DROPDOWN, sauf que le contrôle d'édition est remplacé par un élément de texte statique qui affiche la sélection actuelle dans la zone de liste
    $CBS_SIMPLE - Affiche la liste déroulante tout le temps

Default: $CBS_DROPDOWN, $WS_VSCROLL
Forced: $WS_CHILD, $WS_TABSTOP, $WS_VISIBLE
$iExStyle [optionnel] Style étendu du contrôle:
    $CBES_EX_CASESENSITIVE - Les recherches dans la liste seront sensibles à la casse
    $CBES_EX_NOEDITIMAGE - La zone d'édition et la liste déroulante n'affichent pas les éléments images
    $CBES_EX_NOEDITIMAGEINDENT - La zone d'édition et la liste déroulante n'affichent pas les éléments images
    $CBES_EX_NOSIZELIMIT - Permet au contrôle ComboBoxEx d'être dimensionné verticalement plus petit que le contrôle de liste déroulante qu'il contient

Valeur de retour

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

En relation

_GUICtrlComboBoxEx_Destroy

Exemple

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

Global $g_hCombo

Example()

Func Example()
    Local $hGUI

    ; Crée une GUI
    $hGUI = GUICreate("ComboBoxEx Create", 400, 300)
    $g_hCombo = _GUICtrlComboBoxEx_Create($hGUI, "This is a test|Line 2", 2, 2, 394, 268)
    GUISetState(@SW_SHOW)

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    _GUICtrlComboBoxEx_AddString($g_hCombo, "Some More Text")
    _GUICtrlComboBoxEx_InsertString($g_hCombo, "Inserted Text", 1)

    ; Boucle jusqu'à ce que l'utilisateur quitte
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $g_hCombo
            Switch $iCode
                Case $CBEN_BEGINEDIT ; Envoyé quand l'utilisateur active la liste déroulante ou clique dans le champ de saisie du contrôle.
                    _DebugPrint("$CBEN_BEGINEDIT" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode)
                    Return 0
                Case $CBEN_DELETEITEM
                    _DebugPrint("$CBEN_DELETEITEM" & _GetComboBoxEx($lParam))
                    Return 0
                Case $CBEN_DRAGBEGINA, $CBEN_DRAGBEGINW
                    $tInfo = DllStructCreate($tagNMCBEDRAGBEGIN, $lParam)
                    If DllStructGetData($tInfo, "ItemID") Then _DebugPrint("$CBEN_DRAGBEGIN" & _GetComboBoxEx($lParam))
                    _DebugPrint("$CBEN_DRAGBEGIN" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @CRLF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @CRLF & _
                            "-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @CRLF & _
                            "-->ItemID:" & @TAB & DllStructGetData($tInfo, "ItemID") & @CRLF & _
                            "-->Text:" & @TAB & DllStructGetData($tInfo, "Text"))
                    ; return est ignoré
                Case $CBEN_ENDEDITA, $CBEN_ENDEDITW ; Envoyé quand l'utilisateur a terminé une opération dans la zone d'édition ou a sélectionné un élément dans la liste déroulante du contrôle.
                    $tInfo = DllStructCreate($tagNMCBEENDEDIT, $lParam)
                    _DebugPrint("$CBEN_ENDEDIT" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @CRLF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @CRLF & _
                            "-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @CRLF & _
                            "-->fChanged:" & @TAB & DllStructGetData($tInfo, "fChanged") & @CRLF & _
                            "-->NewSelection:" & @TAB & DllStructGetData($tInfo, "NewSelection") & @CRLF & _
                            "-->Text:" & @TAB & DllStructGetData($tInfo, "Text") & @CRLF & _
                            "-->Why:" & @TAB & DllStructGetData($tInfo, "Why"))
                   Return False ; accept the notification and allow the control to display the selected item
                    ; Return True  ; otherwise
                Case $CBEN_GETDISPINFOA, $CBEN_GETDISPINFOW ; Envoyé pour récupérer des informations d'affichage sur un élément callback
                    _DebugPrint("$CBEN_GETDISPINFO" & _GetComboBoxEx($lParam))
                    Return 0
                Case $CBEN_INSERTITEM
                    $tInfo = DllStructCreate($tagNMCOMBOBOXEX, $lParam)
                    Local $tBuffer = DllStructCreate("wchar Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
                    _DebugPrint("$CBEN_INSERTITEM" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @CRLF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @CRLF & _
                            "-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @CRLF & _
                            "-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @CRLF & _
                            "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @CRLF & _
                            "-->Text:" & @TAB & DllStructGetData($tBuffer, "Text") & @CRLF & _
                            "-->TextMax:" & @TAB & DllStructGetData($tInfo, "TextMax") & @CRLF & _
                            "-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @CRLF & _
                            "-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @CRLF & _
                            "-->SelectedImage:" & @TAB & DllStructGetData($tInfo, "SelectedImage") & @CRLF & _
                            "-->OverlayImage:" & @TAB & DllStructGetData($tInfo, "OverlayImage") & @CRLF & _
                            "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
                    Return 0
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _GetComboBoxEx($lParam)
    Local $tInfo = DllStructCreate($tagNMCOMBOBOXEX, $lParam)
    Local $aItem = _GUICtrlComboBoxEx_GetItem($g_hCombo, DllStructGetData($tInfo, "Item"))
    Return @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @CRLF & _
            "-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @CRLF & _
            "-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @CRLF & _
            "-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @CRLF & _
            "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @CRLF & _
            "-->Text:" & @TAB & $aItem[0] & @CRLF & _
            "-->TextMax:" & @TAB & $aItem[1] & @CRLF & _
            "-->Indent:" & @TAB & $aItem[2] & @CRLF & _
            "-->Image:" & @TAB & $aItem[3] & @CRLF & _
            "-->SelectedImage:" & @TAB & $aItem[4] & @CRLF & _
            "-->OverlayImage:" & @TAB & $aItem[5] & @CRLF & _
            "-->Param:" & @TAB & $aItem[5]
EndFunc   ;==>_GetComboBoxEx

Func _DebugPrint($s_Text, $sLine = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @CRLF & _
            "+======================================================" & @CRLF & _
            "-->Line(" & StringFormat("%04d", $sLine) & "):" & @TAB & $s_Text & @CRLF & _
            "+======================================================" & @CRLF)
EndFunc   ;==>_DebugPrint