Code: Select all
Enumeration
#MainWindow
#TreeGadget
EndEnumeration
#DT_WORD_ELLIPSIS = $40000
#DT_END_ELLIPSIS = $8000
#DT_PATH_ELLIPSIS = $4000
#DT_MODIFYSTRING = $10000
#CDIS_CHECKED = 8
#CDIS_DEFAULT = $20
#CDIS_DISABLED = 4
#CDIS_FOCUS = $10
#CDIS_GRAYED = 2
#CDIS_HOT = $40
#CDIS_INDETERMINATE = $100
#CDIS_MARKED = $80
#CDIS_SELECTED = 1
#CDIS_SHOWKEYBOARDCUES = $200
#CDDS_ITEM = $10000
#CDDS_MAPPART = 5
#CDDS_POSTERASE = 4
#CDDS_POSTPAINT = 2
#CDDS_PREERASE = 3
#CDDS_PREPAINT = 1
#CDDS_ITEMPOSTERASE = #CDDS_ITEM | #CDDS_POSTERASE
#CDDS_ITEMPOSTPAINT = #CDDS_ITEM | #CDDS_POSTPAINT
#CDDS_ITEMPREERASE = #CDDS_ITEM | #CDDS_PREERASE
#CDDS_ITEMPREPAINT = #CDDS_ITEM | #CDDS_PREPAINT
#CDDS_SUBITEM = $20000
#CDRF_DODEFAULT = 0
#CDRF_NEWFONT = 2
#CDRF_NOTIFYITEMDRAW = $20
#CDRF_NOTIFYPOSTERASE = $40
#CDRF_NOTIFYPOSTPAINT = $10
#CDRF_NOTIFYSUBITEMDRAW = $20
#CDRF_SKIPDEFAULT = 4
Procedure MyWindowCallback(WindowID,Message,wParam,lParam)
Result=#PB_ProcessPureBasicEvents
Select Message
Case #WM_NOTIFY
*tvCD.NMTVCUSTOMDRAW=lparam
If *tvCD\nmcd\hdr\hwndFrom=GadgetID(#TreeGadget) And *tvCD\nmcd\hdr\code=#NM_CUSTOMDRAW
Select *tvCD\nmcd\dwDrawStage
Case #CDDS_PREPAINT:ProcedureReturn (#CDRF_NOTIFYITEMDRAW)
Case #CDDS_ITEMPREPAINT
thisItem=*tvCD\nmcd\dwItemSpec
;tvItemRect.RECT\left=#TVIR_LABEL
tvItemRect.RECT\left=thisItem
SendMessage_(GadgetID(#TreeGadget),#TVM_GETITEMRECT,#True,@tvItemRect)
tvi.TV_ITEM
tvi$ = Space(256)
tvi\mask = #TVIF_HANDLE | #TVIF_PARAM | #TVIF_TEXT
tvi\pszText = @tvi$
tvi\cchTextMax = 256
tvi\hItem=thisitem
tvFlags=#DT_END_ELLIPSIS
SendMessage_(GadgetID(#TreeGadget),#TVM_GETITEM,0,tvi)
tvi$=ReplaceString(tvi$,"[name]","Anthony")
tvItemRect\right+200 ; add some - it seems to clip okay
SetTextColor_(*tvCD\nmcd\hDC,RGB(255,255,255))
SetBkColor_(*tvCD\nmcd\hDC,RGB(90,30,40))
DrawText_(*tvCD\nmcd\hDC,tvi$,Len(tvi$),tvItemRect,tvFlags)
ProcedureReturn(#CDRF_SKIPDEFAULT)
EndSelect
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(#MainWindow,0,0,355,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"TreeGadget") And CreateGadgetList(WindowID(0))
TreeGadget(#TreeGadget, 10,10,330,160)
AddGadgetItem (#TreeGadget,-1,"The following bit will change [name], heheh!")
AddGadgetItem (#TreeGadget,-1,"This is a node, click slightly to the left of the text")
OpenTreeGadgetNode(#TreeGadget)
AddGadgetItem(#TreeGadget,-1,"sub text")
AddGadgetItem(#TreeGadget,-1,"another change test: [name] !!!")
CloseTreeGadgetNode(#TreeGadget)
SetWindowCallback(@MyWindowCallback())
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Do I just draw an icon? How do I do this?