insertNameTreeSelectedItem:
comboGetTxt 201
mov [tvins.item.mask],TVIF_TEXT
mov [tvins.item.cchTextMax], maxTxtLenn
mov [tvins.item.pszText],comboTxt 
invoke GetDlgItem,esi,1
mov [treeHwnd],eax
invoke SendMessage,eax,TVM_GETNEXTITEM,TVGN_CARET, 0 ;TVGN_NEXTVISIBLE  TVGN_FIRSTVISIBLE TVGN_CARET

;invoke SendMessage,eax,TVM_GETNEXTITEM,TVGN_PARENT, 0
mov  [tvins.hParent],eax
invoke SendMessage,[treeHwnd],TVM_INSERTITEM, 0, tvins
;invoke UpdateWindow,[treeHwnd] ;send wm_paint not help
xor ecx,ecx
ret

reNameTreeSelectedItem:
comboGetTxt 201
mov [tvi.mask],TVIF_TEXT;+TVIF_HANDLE
mov [tvi.cchTextMax], maxTxtLenn
mov [tvi.pszText],comboTxt 
invoke GetDlgItem,esi,1
mov [treeHwnd],eax
invoke SendMessage,eax,TVM_GETNEXTITEM,TVGN_CARET, 0 ;TVGN_NEXTVISIBLE  TVGN_FIRSTVISIBLE TVGN_CARET
mov [tvi.hItem],eax
invoke SendMessage,[treeHwnd],TVM_SETITEMA, 0, tvi
xor ecx,ecx
ret

delTreeSelectedItem:
mov [tvi.mask],TVIF_TEXT;+TVIF_HANDLE
mov [tvi.cchTextMax], 50
;mov [tvi.pszText],.tt
invoke GetDlgItem,esi,1
mov [treeHwnd],eax
invoke SendMessage,eax,TVM_GETNEXTITEM,TVGN_CARET, 0 ;TVGN_NEXTVISIBLE  TVGN_FIRSTVISIBLE TVGN_CARET
mov [tvi.hItem],eax
invoke SendMessage,[treeHwnd],TVM_DELETEITEM,0,[tvi.hItem]
xor ecx,ecx
ret

GetStructNames:
        invoke GetDlgItem,esi,1
        mov [treeHwnd],eax
        ;invoke SendMessage,eax,TVM_GETCOUNT,0,0
        ;inc eax
        ;mov [treeNumItems],eax
;cinvoke sprintf,Status+1000,'%d',eax
;Msg Status+1000

        mov [tvi.cChildren], 0
        mov edi,Status
        mov [tvi.mask],TVIF_TEXT
        mov [tvi.cchTextMax], maxTxtLenn ;ne date real size! Vsegda ostaetca maxTxtLenn
        mov [tvi.pszText],edi

        invoke SendMessage,[treeHwnd],TVM_GETNEXTITEM,TVGN_ROOT,0  ;get first tree element
.uu:    mov [tvi.hItem],eax
        invoke SendMessage,[treeHwnd],TVM_GETITEMA, 0, tvi

        Msg edi

;get childrns
        mov ebx, [tvi.hItem]
.nnx:
        mov [tvi.mask],TVIF_TEXT+TVIF_CHILDREN
        invoke SendMessage,[treeHwnd],TVM_GETNEXTITEM,TVGN_CHILD,[tvi.hItem]
        mov [tvi.hItem],eax
        test eax,eax
        jz .done
.10:
        invoke SendMessage,[treeHwnd],TVM_GETITEMA, 0, tvi
        ;dec [treeNumItems]
        ;jz  .ll
        cmp [tvi.cChildren],1
        jnz .oo
        Msg edi	;potom nado snova vernutca na etot [tvi.hItem] inache ne budget names druhih childrens
        jmp .nnx
.oo:
        mov esi,eax
        Msg edi
        mov word [edi],0
        invoke SendMessage,[treeHwnd],TVM_GETNEXTITEM,TVGN_NEXT,[tvi.hItem]
        mov [tvi.hItem],eax
        test esi,esi
        jnz .10
;mov [tvi.hItem],ebx
;jmp .nnx
.done:
        mov [tvi.mask],TVIF_TEXT
        mov     [tvi.cChildren], 0
        mov [tvi.hItem],ebx
        invoke SendMessage,[treeHwnd],TVM_GETNEXTITEM,TVGN_NEXT,[tvi.hItem]
        test eax,eax
        jnz  .uu
.ll:
        xor ecx,ecx
        ret

treeNumItems dd 0

GetTxtTree: ;Msg .tt
comboGetTxt 200
;Msg comboTxt
;mov [tvi.hItem],0
mov [tvi.mask],TVIF_TEXT;+TVIF_HANDLE
mov [tvi.cchTextMax], maxTxtLenn
mov [tvi.pszText],.tt
;invoke  SendDlgItemMessage, esi, 1, LVM_GETITEM, 0, tvi

rept 1 {
invoke GetDlgItem,esi,1
mov [treeHwnd],eax
;invoke SendMessage,eax,LVM_GETITEMTEXTA, 0, tvi
invoke SendMessage,eax,TVM_GETNEXTITEM,TVGN_CARET, 0 ;TVGN_NEXTVISIBLE  TVGN_FIRSTVISIBLE TVGN_CARET
mov [tvi.hItem],eax
invoke SendMessage,[treeHwnd],TVM_SETITEMA, 0, tvi                      ;TVM_SETITEMA TVM_GETITEMA
;invoke SendMessage,[treeHwnd],TVM_DELETEITEM,0,[tvi.hItem]
}

;jz @f
;Msg 'yes'
;@@:

Msg [tvi.pszText]
xor ecx,ecx
ret
.tt db 'done',0
        dB 92 dup(0)
treeHwnd dd 0
