Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiTreeView.au3>
#include <GuiListView.au3>
Opt("GUIOnEventMode", 1)
Dim $Gui
Dim $ItemTree[20]
Dim $ItemList[6]
$Gui = GUICreate("test", 300, 300)
$ItemTree[0] = GUICtrlCreateTreeView(10, 10, 280, 135)
For $i = 1 To 19
    $ItemTree[$i] = GUICtrlCreateTreeViewItem(Random(0, 1000, 1), $ItemTree[Random(0, $i - 1, 1)])
Next
$ItemList[0] = GUICtrlCreateListView("Num1|Num2|Num3", 10, 155, 280, 135)
For $i = 1 To 5
    $ItemList[$i] = GUICtrlCreateListViewItem(Random(0, 100, 1) & "|" & Random(0, 100, 1) & "|" & Random(0, 100, 1), $ItemList[0])
Next
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While (True)
    Sleep(10)
WEnd
Func quit()
    Exit
EndFunc   ;==>quit
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTreeview
    $hWndTreeview = $ItemTree[0]
    $hWndListView = $ItemList[0]
    If Not IsHWnd($ItemTree[0]) Then $hWndTreeview = GUICtrlGetHandle($ItemTree[0])
    If Not IsHWnd($ItemList[0]) Then $hWndListView = GUICtrlGetHandle($ItemList[0])
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndTreeview
            Local $tPoint, $tTVHEx, $TVhItem, $mX, $mY
            $tPoint = _WinAPI_GetMousePos(True, $hWndTreeview)
            $mX = DllStructGetData($tPoint, "X")
            $mY = DllStructGetData($tPoint, "Y")
            $tTVHEx = _GUICtrlTreeView_HitTestEx($hWndTreeview, $mX, $mY)
            $TVhItem = DllStructGetData($tTVHEx, "Item")
            If $TVhItem = 0x00000000 Then Return 0
            Switch $iCode
                Case $NM_CLICK
                    ConsoleWrite("Clic Gauche sur " & _GUICtrlTreeView_GetText($hWndTreeview, $TVhItem) & @LF)
                Case $NM_RCLICK
                    ConsoleWrite("Clic Droit sur " & _GUICtrlTreeView_GetText($hWndTreeview, $TVhItem) & @LF)
            EndSwitch
            Return 0
        Case $hWndListView
            Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
            Local $Index = DllStructGetData($tInfo, "Index")
            If $Index = -1 Then Return 0
            Switch $iCode
                Case $NM_CLICK
                    ConsoleWrite("Clic Gauche sur la ligne d'index " & $Index & @LF)
                Case $NM_RCLICK
                    ConsoleWrite("Clic Droit sur la ligne d'index " & $Index & @LF)
            EndSwitch
            Return 0
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY