UDF > GUI > GuiTreeView >


_GUICtrlTreeView_CreateDragImage

Cr�e un bitmap pour le noeud sp�cifi�, par glissement de l'image

#include <GuiTreeView.au3>
_GUICtrlTreeView_CreateDragImage ( $hWnd, $hItem )

Param�tres

$hWnd ID/handle du contr�le
$hItem Handle du noeud

Valeur de retour

Succ�s: Retourne le handle de la liste d'images � laquelle a �t� ajout� le bitmap gliss�.
�chec: Retourne 0.

Remarque

Si vous cr�ez le contr�le sans une liste d'images associ�e, vous ne pouvez pas utiliser cette fonction pour cr�er l'image � afficher pendant une op�ration de d�placement.
Vous devez impl�menter votre propre m�thode de cr�ation d'un curseur de d�placement.
Vous �tes responsable de la destruction de la liste d'images quand elle n'est plus n�cessaire.

Exemple

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiTreeView.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIMisc.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
    Local $hGUI, $hImage, $iImage, $hItem, $bDragging = False, $aDrag, $idTreeView
    Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)

    $hGUI = GUICreate("TreeView Create Drage Image", 400, 300)
    $idTreeView = GUICtrlGetHandle(GUICtrlCreateTreeView(2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE))

    GUISetState(@SW_SHOW)

    ; Charge les images
    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 110)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 131)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 165)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 168)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 137)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 146)
    _GUIImageList_Add($hImage, _GUICtrlTreeView_CreateSolidBitMap($idTreeView, 0xFF0000, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlTreeView_CreateSolidBitMap($idTreeView, 0x00FF00, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlTreeView_CreateSolidBitMap($idTreeView, 0x0000FF, 16, 16))
    _GUICtrlTreeView_SetNormalImageList($idTreeView, $hImage)

    _GUICtrlTreeView_BeginUpdate($idTreeView)
    For $x = 1 To Random(2, 10, 1)
        $iImage = Random(0, 8, 1)
        $hItem = _GUICtrlTreeView_Add($idTreeView, 0, StringFormat("[%02d] New Item", $x), $iImage, $iImage)
        For $y = 1 To Random(2, 10, 1)
            $iImage = Random(0, 8, 1)
            _GUICtrlTreeView_AddChild($idTreeView, $hItem, StringFormat("[%02d] New Child", $y), $iImage, $iImage)
        Next
    Next
    _GUICtrlTreeView_EndUpdate($idTreeView)
    _GUICtrlTreeView_SelectItem($idTreeView, 0)

    ; Boucle jusqu'� ce que l'utilisateur quitte.
    Local $iMsg = GUIGetMsg()
    While $iMsg <> $GUI_EVENT_CLOSE
        Switch GUIGetMsg()
            Case $GUI_EVENT_MOUSEMOVE
                If $bDragging Then DrawDragImage($idTreeView, $aDrag)

            Case $GUI_EVENT_PRIMARYDOWN
                Local $hSelected = _GUICtrlTreeView_GetSelection($idTreeView)
                If $hSelected Then
                    $bDragging = True
                    ; Cr�e une image gliss�e
                    $aDrag = _GUICtrlTreeView_CreateDragImage($idTreeView, $hSelected)
                    DrawDragImage($idTreeView, $aDrag)
                EndIf

            Case $GUI_EVENT_PRIMARYUP
                If $bDragging Then
                    $bDragging = False
                    ; Supprime la liste d'image
                    _GUIImageList_Destroy($aDrag)
                    _WinAPI_InvalidateRect($idTreeView)
                    _WinAPI_InvalidateRect(HWnd($hGUI))
                EndIf
        EndSwitch
        $iMsg = GUIGetMsg()
    WEnd
    GUIDelete()
EndFunc   ;==>Example

; Dessine l'image gliss�e
Func DrawDragImage(ByRef $hControl, ByRef $aDrag)
    Local $tPoint, $hDC
    $hDC = _WinAPI_GetWindowDC($hControl)
    $tPoint = _WinAPI_GetMousePos(True, $hControl)
    _WinAPI_InvalidateRect($hControl)
    _GUIImageList_Draw($aDrag, 0, $hDC, DllStructGetData($tPoint, "X"), DllStructGetData($tPoint, "Y"))
    _WinAPI_ReleaseDC($hControl, $hDC)
EndFunc   ;==>DrawDragImage