Bonjour
Alors pour récuppérer la action de la souris cela se passe en plusieurs étape.
D'abord il faut dire a ton programme de capturer les évenements, et lui indiqué qu'elle fonction va les traiter.
Un peu comme on fait dans le while et $nMsg = GUIGetMsg() sauf que c'est pas sufisant pour les objets un peu plus complexe comme les listeView ou Treeview.
Donc on fait comme ca:
Aprés la création de la GUI on va lui dire de capturer les évenement xindoxs et de les envoyer a une fonction.
GUIRegisterMsg($WM_NOTIFY, "_MY_WM_NOTIFY")
Donc on va créer la fonction _MY_WM_NOTIFY() qui va prendre les évenements windows. Maintenant la question qui a envoyer un évènement et quel est-il ??
C'est pour ca que l'on va ajouter 2 ou 4 paramêtre a cette fonction.
Func _MY_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
EndFunc
Comme tu le vois, on va recevoir le Handler et un Message de windows.
Voila un exemple de fonction
Code : Tout sélectionner
Func _MY_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam, $lParam
Local $tNMHDR, $_hWnd, $_iCtrl, $_iCode
Local $hGUI = _GUIPng_GetGui($GUI_Main)
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$_hWnd = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$_iCtrl = DllStructGetData($tNMHDR, "IDFrom")
$_iCode = DllStructGetData($tNMHDR, "Code")
#forceref $_iCtrl, $hGUI
Switch $_hWnd
Case $MA_LISTVIEW
;;; ici on récupère les infos de la listview
Local $tNMLSTV = DllStructCreate($tagNMLISTVIEW, $lParam)
Local $_Item = DllStructGetData($tNMLSTV, "Item")
Local $_Param = _GUICtrlListView_GetItemParam($_hWnd, $_Item)
Switch $_iCode
Case $LVN_BEGINDRAG, $LVN_BEGINRDRAG ;;; Drag and Drop
Return 1
Case $LVN_HOTTRACK ;;; Passage de la souris
Switch $_Item
Case - 1
;; passage de la souris sur la listview
Case Else
;; passage de la souris sur 1 Item la listview
EndSwitch
EndIf
Return 0
Case $NM_CLICK ;;; Click de la souris
ConsoleWrite("++ _MY_WM_NOTIFY() $hListView $NM_CLICK " & $_Item & @LF)
ConsoleWrite("++ _MY_WM_NOTIFY() $hListView $NM_CLICK " & $_Param & @LF)
If $_Item > -1 Then
ConsoleWrite("++ _MY_WM_NOTIFY() LV_Videos $NM_CLICK Item " & $_Item & @LF)
EndIf
Case $NM_RCLICK ;;; click bouton droit
Case $NM_DBLCLK, $NM_RDBLCLK ;; Idem mais double click
Case $NM_KILLFOCUS ; The control has lost the input focus
Case $NM_SETFOCUS ; The control has received the input focus
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG ;;; la fonction renvoie les évènements par défaut de AutoIt a la suite de ton programme
EndFunc ;==>_MY_WM_NOTIFY