UDF > GUI > GuiHeader >


_GUICtrlHeader_Create

Crée un contrôle Header

#include <GuiHeader.au3>
_GUICtrlHeader_Create ( $hWnd [, $iStyle = 0x00000046] )

Paramètres

$hWnd Handle du parent ou de la fenêtre propriétaire
$iStyle [optionnel] Styles du contrôle:
$HDS_BUTTONS - Chaque en-tête du contrôle apparait et se comporte comme un bouton poussoir
$HDS_DRAGDROP - Permet le glisser-déposer pour réorganiser les colonnes
$HDS_FILTERBAR - Inclut une barre de filtre dans le cadre du contrôle Header standard
$HDS_FLAT - Force le contrôle Header à se dessiner sans relief
$HDS_FULLDRAG - Force le contrôle Header à afficher le contenu des en-têtes
$HDS_HIDDEN - Spécifie que le contrôle Header est destiné à être caché
$HDS_HORZ - Crée un contrôle Header avec une orientation horizontale
$HDS_HOTTRACK - Active la trace en temps réel

Par défaut: $HDS_BUTTONS, $HDS_HOTTRACK, $HDS_DRAGDROP
Forcés: $WS_CHILD, $WS_VISIBLE

Valeur de retour

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

En relation

_GUICtrlHeader_Destroy

Exemple

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

Global $g_hHeader

Example()

Func Example()
    Local $hGUI

    ; Crée une GUI
    $hGUI = GUICreate("Header", 400, 300)
    $g_hHeader = _GUICtrlHeader_Create($hGUI, $HDS_FILTERBAR)
    _GUICtrlHeader_SetUnicodeFormat($g_hHeader, True)
    GUISetState(@SW_SHOW)

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; Ajoute des colonnes
    _GUICtrlHeader_AddItem($g_hHeader, "Column 1", 100)
    _GUICtrlHeader_AddItem($g_hHeader, "Column 2", 100)
    _GUICtrlHeader_AddItem($g_hHeader, "Column 3", 100)
    _GUICtrlHeader_AddItem($g_hHeader, "Column 4", 100)

    ; Efface tous les filtres
    _GUICtrlHeader_ClearFilterAll($g_hHeader)

    ; 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, $iCode
    Local $tNMHDR, $tNMHEADER, $tNMHDFILTERBTNCLICK, $tNMHDDISPINFO

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")

    If $hWndFrom = $g_hHeader then
        Switch $iCode
            Case $HDN_BEGINDRAG
                ; Envoyé par le contrôle Header quand une opération 'glisser' a démarré sur un des ses éléments
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_BEGINDRAG" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                Return False ; Permet au contrôle Header de gérer automatiquement les opérations de glisser-déposer
                ; Return True; Permet une  gestion externe (manuelle) du glisser-déposer par le propriétaire du
                ; contrôle qui veut fournir des services personnalisés dans le processus de glisser-déposer

            Case $HDN_BEGINTRACK, $HDN_BEGINTRACKW
                ; Notifie à la fenêtre parent d'un contrôle Header que l'utilisateur a démarré 'glisser' sur une séparation
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_BEGINTRACK" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                Return False ; pour autoriser le glissement de la barre de séparation
                ;Return True  ; pour interdire le glissement

            Case $HDN_DIVIDERDBLCLICK, $HDN_DIVIDERDBLCLICKW
                ; Notifie à la fenêtre parent du contrôle Header que l'utilisateur a double-cliqué sur une séparation
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_DIVIDERDBLCLICK" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                ; aucune valeur retournée

            Case $HDN_ENDDRAG
                ; Envoyé par le contrôle Header quand une opération 'déposer' termine l'opération 'glisser' relative à un élément
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_ENDDRAG" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                Return False ; pour autoriser le contrôle à placer et ré-ordonner automatiquement l'élément
                ; Return True  ; pour interdire 'déposer' pour l'élément

            Case $HDN_ENDTRACK, $HDN_ENDTRACKW
                ; Notifie à la fenêtre parent d'un contrôle Header que l'utilisateur a terminé le glissemnt d'une séparation
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_ENDTRACK" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                ; aucune valeur retournée

            Case $HDN_FILTERBTNCLICK
                ; Notifie à la fenêtre parent d'un contrôle Header que le bouton filtre est cliqué ou en réponse à un message $HDM_SETITEM
                $tNMHDFILTERBTNCLICK = DllStructCreate($tagNMHDFILTERBTNCLICK, $lParam)
                _DebugPrint("$HDN_FILTERBTNCLICK" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Item") & @CRLF & _
                        "-->Left:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Left") & @CRLF & _
                        "-->Top:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Top") & @CRLF & _
                        "-->Right:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Right") & @CRLF & _
                        "-->Bottom:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Bottom"))
                ; Return True  ; une notication $HDN_FILTERCHANGE sera envoyée à la fenêtre parent du contrôle Header
                ; Cette notification donne à la fenêtre parent l'opportunité de synchroniser les éléments de son interface utilisateur
                Return False ; si vous ne voulez pas que la notification soit envoyée

            Case $HDN_FILTERCHANGE
                ; Notifie à la fenêtre parent d'un contrôle Header que les attributs d'un filtre sont en train d'être changés ou édités
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_FILTERCHANGE" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                ; aucune valeur retournée

            Case $HDN_GETDISPINFO, $HDN_GETDISPINFOW
                ; Envoyé au propriétaire du contrôle Header quand le contrôle a besoin d'information sur un élément callback
                $tNMHDDISPINFO = DllStructCreate($tagNMHDDISPINFO, $lParam)
                _DebugPrint("$HDN_GETDISPINFO" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHDDISPINFO, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHDDISPINFO, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHDDISPINFO, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHDDISPINFO, "Item"))
                ; Return LRESULT

            Case $HDN_ITEMCHANGED, $HDN_ITEMCHANGEDW
                ; Notifie à la fenêtre parent d'un contrôle Header que les attributs d'un élément ont changés
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_ITEMCHANGED" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                ; aucune valeur retournée

            Case $HDN_ITEMCHANGING, $HDN_ITEMCHANGINGW
                ; Notifie à la fenêtre parent d'un contrôle Header que les attributs d'un élément sont sur le point d'être modifiés
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_ITEMCHANGING" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                Return False ; pour autoriser les changements
                ; Return True  ; pour les prévenir

            Case $HDN_ITEMCLICK, $HDN_ITEMCLICKW
                ; Notifie à la fenêtre parent d'un contrôle Header que l'utilisateur a cliqué sur le contrôle
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_ITEMCLICK" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                ; aucune valeur retournée

            Case $HDN_ITEMDBLCLICK, $HDN_ITEMDBLCLICKW
                ; Notifie à la fenêtre parent d'un contrôle Header que l'utilisateur a double-cliqué sur le contrôle
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_ITEMDBLCLICK" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                ; aucune valeur retournée

            Case $HDN_TRACK, $HDN_TRACKW
                ; Notifie à la fenêtre parent d'un contrôle Header que l'utilisateur est en train de faire glisser une séparation dans le contrôle
                $tNMHEADER = DllStructCreate($tagNMHEADER, $lParam)
                _DebugPrint("$HDN_TRACK" & @CRLF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @CRLF & _
                        "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @CRLF & _
                        "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @CRLF & _
                        "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @CRLF & _
                        "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                Return False ; pour continuer le suivi de la barre de séparation
                ; Return True  ; pour terminer le suivi
        EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

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