TreeNode icons

BlitzPlus Forums/BlitzPlus Programming/TreeNode icons

JoshK(Posted 2005) [#1]
I got these working in BlitzPlus:

Structure TVITEM
mask.l
hItem.l
state.l
stateMask.l
pszText.l
cchTextMax.l
iImage.l
iSelectedImage.l
cChildren.l
lParam.l
EndStructure

InitCommonControls_()

ProcedureDLL.l CreateImageList()
ProcedureReturn ImageList_Create_(16,16,#ILC_COLOR16,2,4)
EndProcedure

ProcedureDLL ImageListAdd(hndImgList,hndimage)
ImageList_Add_(hndImgList,hndimage,0)
EndProcedure

ProcedureDLL SetTreeViewNodeIcon(treeviewnode)
hitem=PeekL(treeviewnode+28)
hwnd=PeekL(treeviewnode+24)
TVITEM.TVITEM
TVITEM\hItem=hitem
SendMessage_(hwnd,#TVM_GETITEM,0,TVITEM.TVITEM)
TVITEM\mask=#TVIF_IMAGE+#TVIF_SELECTEDIMAGE
TVITEM\iImage=1
TVITEM\iSelectedImage=1
SendMessage_(hwnd,#TVM_SETITEM,0,TVITEM.TVITEM)
EndProcedure




















Const TV_FIRST = $1100
Const TVM_GETITEMRECT = (TV_FIRST + 4)
Const TVM_SETIMAGELIST = (TV_FIRST + 9)
Const TVM_HITTEST = (TV_FIRST + 17)
Const TVM_SORTCHILDRENCB = (TV_FIRST + 21)
Const TVM_GETITEMW = (TV_FIRST + 62)
Const TVM_SETITEMW = (TV_FIRST + 63)
Const TVM_INSERTITEMW = (TV_FIRST + 50)
Const TVM_GETITEM = TV_FIRST + 62
Const TVM_SETITEM = TV_FIRST + 13
Const TVM_GETNEXTITEM = TV_FIRST + 10
Const TVM_GETITEMSTATE = TV_FIRST + 39
Const TVIS_EXPANDED = $20
Const TVGN_CARET = $9
Const TVM_GETITEM32A =(TV_FIRST+12)
Const TVM_GETITEM32W =(TV_FIRST+62)
Const TVGN_CHILD =4
Const TVM_GETCOUNT =(TV_FIRST+5)
Const TVGN_NEXT =1
Const TVS_CHECKBOXES =$0100
Const GWL_STYLE = (-16)
Const TVM_SELECTITEM =(TV_FIRST+11)
Const TVM_SORTCHILDREN =(TV_FIRST+19)
Const TVSIL_NORMAL = 0
Const TVSIL_STATE = 2

win=CreateWindow("",0,0,400,300)

tree=CreateTreeView(0,0,200,200,win)

root=TreeViewRoot(tree)
node=AddTreeViewNode("test",root)
node2=AddTreeViewNode("test2",node)

dir$=CurrentDir()
icon0=pbLoadImage(2,dir+"0.bmp")
icon1=pbLoadImage(1,dir+"1.bmp")
;ChangeDir dir

ilist=createimagelist()

ImageListAdd(ilist,icon0)
ImageListAdd(ilist,icon1)

hwnd=QueryObject(tree,1)
SendMessage hwnd,TVM_SETIMAGELIST,TVSIL_NORMAL,ilist

SetTreeViewNodeIcon(node)

Repeat : Until WaitEvent()=$803

Function SetTreeViewNodeIcon1(treeviewnode,index)
item=PeekL(treeviewnode+28)
hwnd=PeekL(treeviewnode+24)
temp=CreateBank(40)
tvitem=BankAddress(temp)
SendMessage item,TVM_GETITEMW,0,tvitem
For n=0 To BankSize(temp)/4-1
PokeInt temp,n*4,1
Next
SendMessage item,TVM_SETITEMW,0,tvitem
FreeBank temp
End Function