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
EndIfDo I just draw an icon? How do I do this?

