#include #include #include #include #include #include ;Opt('MustDeclareVars', 1) $Debug_TV = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work Global $projets _Main() Func _Main() Local $hItem[6], $hImage Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES) GUICreate("TreeView Get Edit Control", 400, 300) $projets = GUICtrlCreateTreeView(2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE) ; turn off unicode at this time dllstruct doesn't support them _GUICtrlTreeView_SetUnicodeFormat($projets, False) GUISetState() GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") $hImage = _GUIImageList_Create(16, 16, 5, 3) _GUIImageList_AddIcon($hImage, "shell32.dll", 110) _GUIImageList_AddIcon($hImage, "shell32.dll", 131) _GUIImageList_AddIcon($hImage, "shell32.dll", 165) _GUIImageList_AddIcon($hImage, "shell32.dll", 168) _GUIImageList_AddIcon($hImage, "shell32.dll", 137) _GUIImageList_AddIcon($hImage, "shell32.dll", 146) _GUICtrlTreeView_SetNormalImageList($projets, $hImage) For $x = 0 To _GUIImageList_GetImageCount($hImage) - 1 $hItem[$x] = _GUICtrlTreeView_Add($projets, 0, StringFormat("[%02d] New Item", $x + 1), $x, $x) Next ; Edit item 0 label _GUICtrlTreeView_EditText($projets, $hItem[0]) Sleep(1000) _GUICtrlTreeView_EndEdit($projets) ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>_Main Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $iwParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTreeview $hWndTreeview = $projets If Not IsHWnd($projets) Then $hWndTreeview = GUICtrlGetHandle($projets) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndTreeview Switch $iCode Case $NM_CLICK ; The user has clicked the left mouse button within the control ;~ Return 1 ; nonzero to not allow the default processing Return 0 ; zero to allow the default processing Case $NM_DBLCLK ; The user has double-clicked the left mouse button within the control ;~ Return 1 ; nonzero to not allow the default processing Return 0 ; zero to allow the default processing Case $NM_RCLICK ; The user has clicked the right mouse button within the control MsgBox(0,'','Clic Droit : Item sélectionné = ' & @CRLF & _GUICtrlTreeView_GetSelection($projets)) ;~ Return 1 ; nonzero to not allow the default processing Return 0 ; zero to allow the default processing Case $NM_RDBLCLK ; The user has clicked the right mouse button within the control ;~ Return 1 ; nonzero to not allow the default processing Return 0 ; zero to allow the default processing Case $NM_KILLFOCUS ; control has lost the input focus ; No return value Case $NM_RETURN ; control has the input focus and that the user has pressed the key ;~ Return 1 ; nonzero to not allow the default processing Return 0 ; zero to allow the default processing ;~ Case $NM_SETCURSOR ; control is setting the cursor in response to a WM_SETCURSOR message ;~ Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam) ;~ $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom")) ;~ $iIDFrom = DllStructGetData($tinfo, "IDFrom") ;~ $iCode = DllStructGetData($tinfo, "Code") ;~ ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ ;~ "-->Code:" & @TAB & $iCode & @LF & _ ;~ "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _ ;~ "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _ ;~ "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _ ;~ "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _ ;~ "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo")) ;~ Return 0 ; to enable the control to set the cursor ;~ Return 1 ; nonzero to prevent the control from setting the cursor Case $NM_SETFOCUS ; control has received the input focus ; No return value Case $TVN_BEGINDRAGA, $TVN_BEGINDRAGW Case $TVN_BEGINLABELEDITA, $TVN_BEGINLABELEDITW Case $TVN_BEGINRDRAGA, $TVN_BEGINRDRAGW Case $TVN_DELETEITEMA, $TVN_DELETEITEMW Case $TVN_ENDLABELEDITA, $TVN_ENDLABELEDITW Local $tInfo = DllStructCreate($tagNMHDR & ";" & $tagTVITEMEX, $ilParam) If DllStructGetData($tInfo, "Text") <> 0 Then Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text")) _GUICtrlTreeView_SetText($projets, _GUICtrlTreeView_GetSelection($projets), DllStructGetData($tBuffer, "Text")) EndIf Case $TVN_GETDISPINFOA, $TVN_GETDISPINFOW Case $TVN_GETINFOTIPA, $TVN_GETINFOTIPW Case $TVN_ITEMEXPANDEDA, $TVN_ITEMEXPANDEDW Case $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW Case $TVN_KEYDOWN Case $TVN_SELCHANGEDA, $TVN_SELCHANGEDW Case $TVN_SELCHANGINGA, $TVN_SELCHANGINGW Case $TVN_SETDISPINFOA, $TVN_SETDISPINFOW Case $TVN_SINGLEEXPAND EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY