_GUICtrlTreeView_GetState ne fonctionne pas

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 140
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

_GUICtrlTreeView_GetState ne fonctionne pas

#1

Message par A2Energie »

Bonjour amis Autoitiens :D

Je rencontre un problème avec _GUICtrlTreeView_GetState
En effet ce dernier ne retourne rien "0"
Ce qui entraine des problème dans nombreux autres _GUICtrlTreeView_Get car ils se réfèrent a lui pour retourner les valeurs. :lol:

Ci dessous la fonction _GUICtrlTreeView_GetState avec en commentaire ce que j'ai pu suivre sur le traitement de ce dernier. 8)
Je précise que d'autres fonctions _GUICtrlTreeView_ fonctionnent, donc les hwdl que j'indique en élément de fonction ne semblent pas être à l'origine du problème (tels que _GUICtrlTreeView_GetSelection, _GUICtrlTreeView_ClickItem, ...)

Que dois je continuer à vérifier afin de comprendre l'origine de mon problème ?
Malheureusement, je ne comprends pas suffisement les Dllstruct ni les _Mem pour pouvoir enquêter sans votre aide.

Code : Tout sélectionner

; #FUNCTION# ====================================================================================================================
; Author ........: Holger Kotsch
; Modified.......: Gary Frost (gafrost)
; ===============================================================================================================================
Func _GUICtrlTreeView_GetState($hWnd, $hItem = 0)
	If $hItem = 0 Then $hItem = 0x00000000

	$hItem = _GUICtrlTreeView_GetItemHandle($hWnd, $hItem)  ; ICI C'EST OK $hItem correspond bien au noeud
	If $hItem = 0x00000000 Then Return SetError(1, 1, 0)  ; ICI C'EST OK pas d'erreur
	Local $tTVITEM = DllStructCreate($tagTVITEMEX)
	DllStructSetData($tTVITEM, "Mask", $TVIF_STATE)
	DllStructSetData($tTVITEM, "hItem", $hItem)
	If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)  ; ICI C'EST OK pas besoin de GUICtrlGetHandle
	
	If _WinAPI_InProcess($hWnd, $__g_hTVLastWnd) Then  ; ICI le IF n'est pas respecté (je sais pas si c'est bon ou mauvais)
		_SendMessage($hWnd, $TVM_GETITEMA, 0, $tTVITEM, 0, "wparam", "struct*")
		
	Else   ; j'arrive donc ici

		Local $iSize = DllStructGetSize($tTVITEM) ; iSize = 60
		Local $tMemMap
		Local $pMemory = _MemInit($hWnd, $iSize, $tMemMap) ; pMemory  = 0xA60000 mais n'est pas un hWnd

		_MemWrite($tMemMap, $tTVITEM) ; _MemWrite = 1
		_SendMessage($hWnd, $TVM_GETITEMA, 0, $pMemory) ; _SendMessage = 0
		_MemRead($tMemMap, $pMemory, $tTVITEM, $iSize) ; _MemRead = 1
		_MemFree($tMemMap) ; _MemFree = 1
		
	EndIf

	Return DllStructGetData($tTVITEM, "State")
EndFunc   ;==>_GUICtrlTreeView_GetState
En vous remerciant pour votre aide.
Répondre