Code: Select all
Global Text$,Brush,Brush_2,Brush_3
Text$ = Space(#MAX_PATH)
Global Dim icons(5)
i.ICONINFO
i\fIcon=1
CreateImage(0,24,16)
StartDrawing(ImageOutput(0))
Box(0,0,24,16,#White)
Box(4,4,16,8,#Black)
StopDrawing()
i\hbmMask=ImageID(0)
i\hbmColor=ImageID(0)
icons(1)=CreateIconIndirect_(@i)
FreeImage(0)
CreateImage(0,24,16)
StartDrawing(ImageOutput(0))
Box(0,0,24,16,#Blue)
Box(4,4,16,8,#Yellow)
StopDrawing()
i\hbmMask=ImageID(0)
i\hbmColor=ImageID(0)
icons(2)=CreateIconIndirect_(@i)
FreeImage(0)
CreateImage(0,24,16)
StartDrawing(ImageOutput(0))
Box(0,0,24,16,#Red)
Box(4,4,16,8,#Yellow)
StopDrawing()
i\hbmMask=ImageID(0)
i\hbmColor=ImageID(0)
icons(3)=CreateIconIndirect_(@i)
FreeImage(0)
LoadFont(0,"Georgia",12,#PB_Font_Italic)
LoadFont(1,"Broadway",12,#PB_Font_Bold )
Brush = CreateSolidBrush_($FADC72)
Brush_2 = CreateSolidBrush_($99FEFA)
Brush_3 = CreateSolidBrush_($B2FED3)
Procedure WndProc(hWnd, uMsg, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_DRAWITEM
*DRAWITEM.DRAWITEMSTRUCT = lParam
If *DRAWITEM\CtlType = #ODT_COMBOBOX
SetBkMode_(*DRAWITEM\hDC, #TRANSPARENT)
If *DRAWITEM\ItemState & #ODS_FOCUS
FillRect_(*DRAWITEM\hDC,*DRAWITEM\rcItem,Brush)
ElseIf *DRAWITEM\CtlID = 1
FillRect_(*DRAWITEM\hDC,*DRAWITEM\rcItem,Brush_2)
ElseIf *DRAWITEM\CtlID = 2
FillRect_(*DRAWITEM\hDC,*DRAWITEM\rcItem,Brush_3)
EndIf
SendMessage_(*DRAWITEM\hwndItem,#CB_GETLBTEXT,*DRAWITEM\itemID, @Text$)
If *DRAWITEM\itemID % 2 = 1
SelectObject_(*DRAWITEM\hDC, FontID(0))
SetTextColor_(*DRAWITEM\hDC,$0101FE)
*DRAWITEM\rcItem\left = 36
DrawIconEx_(*DRAWITEM\hDC, 8,*DRAWITEM\rcItem\top+6, icons(*DRAWITEM\itemID+1),24,16, 0,0,#DI_NORMAL|#DI_COMPAT)
DrawText_(*DRAWITEM\hDC,@Text$,Len(Text$),*DRAWITEM\rcItem, #DT_SINGLELINE | #DT_VCENTER )
;TextOut_(*DRAWITEM\hDC,*DRAWITEM\rcItem\left+2,*DRAWITEM\rcItem\top+1,Text$,Len(Text$))
Else
SelectObject_(*DRAWITEM\hDC, FontID(1))
SetTextColor_(*DRAWITEM\hDC, $000000)
*DRAWITEM\rcItem\left = 36
DrawIconEx_(*DRAWITEM\hDC, 8,*DRAWITEM\rcItem\top+12, icons(*DRAWITEM\itemID+1),24,16, 0,0,#DI_NORMAL|#DI_COMPAT)
DrawText_(*DRAWITEM\hDC,@Text$,Len(Text$),*DRAWITEM\rcItem, #DT_SINGLELINE | #DT_VCENTER )
;TextOut_(*DRAWITEM\hDC, *DrawItem\rcItem\left+2,*DRAWITEM\rcItem\top+1,Text$,Len(Text$))
EndIf
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
OpenWindow(0,0,0,600,400, "Colored Items", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget )
SetWindowCallback(@WndProc())
ComboBoxGadget(1,10,10,190, 42,#CBS_OWNERDRAWFIXED|#CBS_HASSTRINGS)
AddGadgetItem(1,-1, "Test #1")
AddGadgetItem(1,-1, "Test #2")
AddGadgetItem(1,-1, "Test #3")
AddGadgetItem(1,-1, "Test #4")
SetGadgetState(1,2)
ComboBoxGadget(2,210,10,190, 32,#CBS_OWNERDRAWFIXED|#CBS_HASSTRINGS)
AddGadgetItem(2,-1, "Test #2-1")
AddGadgetItem(2,-1, "Test #2-2")
AddGadgetItem(2,-1, "Test #2-3")
AddGadgetItem(2,-1, "Test #2-4")
SetGadgetState(2,1)
SendMessage_(GadgetID(1),#CB_SETITEMHEIGHT,0,42)
SendMessage_(GadgetID(2),#CB_SETITEMHEIGHT,0,32)
ButtonGadget(3,0,0,0,0,"dummy")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ,2
Select EventType()
Case #PB_EventType_Change
Debug GetGadgetText(GetActiveGadget() )
SetActiveGadget(-1)
EndSelect
EndSelect
EndSelect
Until Quit = 1
End