Code: Alles auswählen
#CDDS_ITEM = $10000
#CDDS_PREPAINT = 1
#CDDS_ITEMPREPAINT = #CDDS_ITEM | #CDDS_PREPAINT
#CDRF_NEWFONT = 2
#CDRF_NOTIFYITEMDRAW = $20
#CDRF_DODEFAULT = 0
; --> Load our underline font
Global hFont
hFont = LoadFont(0, "Courier New", 8, #PB_Font_Underline)
Procedure WinCallback(hwnd, msg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_NOTIFY
*pNMHDR.NMHDR = lParam
If *pNMHDR\code = #NM_CUSTOMDRAW And *pNMHDR\hwndFrom = GadgetID(1)
*pTVcd.NMTVCUSTOMDRAW = lParam
Select *pTVcd\nmcd\dwDrawStage
Case #CDDS_PREPAINT
result = #CDRF_NOTIFYITEMDRAW
Case #CDDS_ITEMPREPAINT
; --> Here we get the text of the TreeGadget item being drawn
tvi.TV_ITEM\mask = #TVIF_TEXT | #TVIF_HANDLE
tviText$ = Space(100)
tvi\pszText = @tviText$
tvi\cchTextMax = 100
tvi\hItem = *pTVcd\nmcd\dwItemSpec
SendMessage_(*pNMHDR\hwndFrom, #TVM_GETITEM, 0, @tvi)
; --> Now we underline "Item 0" and "Item 4" in blue
Select tviText$
Case "Item 0"
; --> Select underlined font into item 0 dc
SelectObject_(*pTVcd\nmcd\hdc, hFont)
SetTextColor_(*pTVcd\nmcd\hdc, RGB(0, 0, 255))
result = #CDRF_NEWFONT
Case "Item 4"
; --> Select underlined font into item 4 dc
SelectObject_(*pTVcd\nmcd\hdc, hFont)
SetTextColor_(*pTVcd\nmcd\hdc, RGB(0, 200, 255))
result = #CDRF_NEWFONT
Default
result = #CDRF_DODEFAULT
EndSelect
EndSelect
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 355, 180, "",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TreeGadget(1, 10, 10, 160, 160)
SetWindowCallback(@WinCallback())
For i = 0 To 10
AddGadgetItem (1, -1, "Item "+Str(i))
SetGadgetItemData(1,0,-1)
Next i
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
EndIf
End