UDF > GUI > GuiHeader >


_GUICtrlHeader_CreateDragImage

Crée une version semi-transparente de l'image d'un élément destiné à être utilisée comme une image à faire glisser

#include <GuiHeader.au3>
_GUICtrlHeader_CreateDragImage ( $hWnd, $iIndex )

Paramètres

$hWnd Handle du le contrôle
$iIndex Index de lélément compté à partir de 0. L'image affectée à l'élément sert de base à l'image transparente.

Valeur de retour

Succès: Retourne le handle d'une liste d'images qui contient la nouvelle image associée à son seul élément.
Échec: Retourne 0.

En relation

_GUICtrlHeader_GetImageList

Exemple

#include <GUIConstantsEx.au3>
#include <GuiHeader.au3>
#include <GuiImageList.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIMisc.au3>
#include <WinAPISysWin.au3>

Global $g_idMemo
Example()

Func Example()
    Local $hGUI, $hHeader, $hImage, $iMsg, $aSize, $tPos, $tRECT, $hDC

    ; Crée une GUI
    $hGUI = GUICreate("Header", 400, 300)
    $hHeader = _GUICtrlHeader_Create($hGUI)
    _GUICtrlHeader_SetUnicodeFormat($hHeader, True)
    $g_idMemo = GUICtrlCreateEdit("", 2, 32, 396, 266, 0)
    GUISetState(@SW_SHOW)

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

    ; Crée une image à faire glisser
    $hImage = _GUICtrlHeader_CreateDragImage($hHeader, 1)
    $aSize = _GUIImageList_GetIconSize($hImage)
    $hDC = _WinAPI_GetDC($hGUI)

    MemoWrite("Image drag Handle: " & "0x" & Hex($hImage))
    MemoWrite("IsPtr  = " & IsPtr($hImage) & " IsHWnd  = " & IsHWnd($hImage))

    ; Montre une image à faire glisser à la position du curseur jusqu'à ce que l'utilisateur quitte
    Do
        $iMsg = GUIGetMsg()
        If $iMsg = $GUI_EVENT_MOUSEMOVE Then
            If $tPos <> 0 Then
                $tRECT = DllStructCreate($tagRECT)
                DllStructSetData($tRECT, "Left", DllStructGetData($tPos, "X"))
                DllStructSetData($tRECT, "Top", DllStructGetData($tPos, "Y"))
                DllStructSetData($tRECT, "Right", DllStructGetData($tPos, "X") + $aSize[0])
                DllStructSetData($tRECT, "Bottom", DllStructGetData($tPos, "Y") + $aSize[1])
                _WinAPI_InvalidateRect($hGUI, $tRECT)
            EndIf
            $tRECT = _WinAPI_GetClientRect($hGUI)
            $tPos = _WinAPI_GetMousePos(True, $hGUI)
            If _WinAPI_PtInRect($tRECT, $tPos) Then
                _GUIImageList_Draw($hImage, 0, $hDC, DllStructGetData($tPos, "X"), DllStructGetData($tPos, "Y"))
            EndIf
        EndIf
    Until $iMsg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

; Ecrit une ligne dans le contrôle mémo
Func MemoWrite($sMessage)
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite