_GUICtrlTreeView_GetState ne fonctionne pas
Posté : mer. 13 oct. 2021 13:46
Bonjour amis Autoitiens
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.
Ci dessous la fonction _GUICtrlTreeView_GetState avec en commentaire ce que j'ai pu suivre sur le traitement de ce dernier.
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.
En vous remerciant pour votre aide.

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.

Ci dessous la fonction _GUICtrlTreeView_GetState avec en commentaire ce que j'ai pu suivre sur le traitement de ce dernier.

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