window 50,50-600,400 usefont "MS Sans Serif",15,7,0,0,0 setdialogfont 1 usermessages 16'-------Fenster schließen abfangen numwidth 10 strwidth 10 declare IcoList&,Tv&,Tv# declare a&,b&,c&,d& '-----------------------------------------------------------------------------------ImageList def ImageList_Create(5) !"COMCTL32","ImageList_Create" def ImageList_AddIcon(2) !"COMCTL32","ImageList_AddIcon" def ImageList_Destroy(1) !"COMCTL32","ImageList_Destroy" def LoadIcon(2) !"USER32","LoadIconA" IcoList&=ImageList_Create(16,16,1,1,0)'---Parameter 1+2: Grösse der Icons ImageList_AddIcon(IcoList&,LoadIcon(0,32512))'---SystemIcons laden ImageList_AddIcon(IcoList&,LoadIcon(0,32513)) ImageList_AddIcon(IcoList&,LoadIcon(0,32514)) ImageList_AddIcon(IcoList&,LoadIcon(0,32515)) '----------------------------------------------------------------------------------Funktionen def TvGetSelect(1) sendmessage(&(1),4362,9,0)'-------TVM_GETNEXTITEM , TVIS_SELECTED def TvInsertItem(1) sendmessage(&(1),4352,0,Tv#)'----TVM_INSERTITEM def TvGetItem(1) sendmessage(&(1),4364,0,Tv#+8)'-----TVM_GETITEM struct TV=Parent&,InsertAfter&,Mask&,Item&,State&,StateMask&,Text&,TextMax&,Ico1&,Ico2&,Children&,Data&,Text$(100) dim Tv#,TV clear Tv# Tv#.Text& = Tv#+48 Tv#.TextMax&= 100 Tv&=control("SysTreeView32","",$5000002f,0,0,0,0,%hwnd,200,%Hinstance,$200) sendmessage(Tv&,4361,0,IcoList&)'---TVM_SETIMAGELIST Tv#.Mask& =1+2+4+32'---TVIF_IMAGE + TVIF_PARAM + TVIF_SELECTEDIMAGE + TVIF_TEXT Tv#.Ico1& =0 Tv#.Ico2& =1 Tv#.Parent&=0'----------oberste Ebene Tv#.Text$ ="Eintrag 1" Tv#.Data& =1111 a&=TvInsertItem(Tv&) Tv#.Parent&=a&'---------unter Eintrag 1 einordnen Tv#.Text$="Eintrag 2" Tv#.Data& =3333 b&=TvInsertItem(Tv&) Tv#.Parent&=b&'---------unter Eintrag 2 einordnen Tv#.Text$="Eintrag 3" Tv#.Data& =4444 TvInsertItem(Tv&) Tv#.Ico1& =3 Tv#.Ico2& =2 Tv#.Parent&=0'----------oberste Ebene Tv#.Text$="Eintrag 4" Tv#.Data& =123 TvInsertItem(Tv&) Tv#.Text$="Eintrag 5" Tv#.Data& =234 b&=TvInsertItem(Tv&) Tv#.Text$="Eintrag 7" Tv#.Data& =345 TvInsertItem(Tv&) Tv#.InsertAfter&=b&'----------oberste Ebene, aber unterhalb von Eintrag 5 Tv#.Text$="Eintrag 6" Tv#.Data& =456 TvInsertItem(Tv&) setwindowpos Tv&=250,10-300,300'---Neuzeichnen wg. Baumstruktur while 1 waitinput locate 0,0 Tv#.Item&=TvGetSelect(Tv&) TvGetItem(Tv&) print "Tv#.Item& :",Tv#.Item& print "Tv#.Text$ :",Tv#.Text$ print "Tv#.Ico1& :",Tv#.Ico1& print "Tv#.Ico2& :",Tv#.Ico2& print "Tv#.Data& :",Tv#.Data& case %umessage=16:break'------------------Fenster schließen endwhile destroywindow(Tv&) case IcoList&:ImageList_Destroy(IcoList&) dispose Tv#