Workaround
The title say it all
Code: Select all
#LVBKIF_SOURCE_NONE = 0
#LVBKIF_SOURCE_HBITMAP = 1
#LVBKIF_SOURCE_URL = 2
#LVBKIF_SOURCE_MASK = 3
#LVBKIF_STYLE_NORMAL = 0
#LVBKIF_STYLE_TILE = $10
#LVBKIF_STYLE_MASK = $10
#LVBKIF_TYPE_WATERMARK = $10000000
#LVM_GETHEADER = #LVM_FIRST + 31
Structure LVBKIMAGE Align #PB_Structure_AlignC
ulFlags.l
hbm.i
pszImage.i
cchImageMax.l
xOffsetPercent.l
yOffsetPercent.l
EndStructure
; Globals
Global oldListIconCallback, hHeader, brush ,lbk.LVBKIMAGE
brush=CreateSolidBrush_(#Yellow)
Procedure SubclassedListIcon(hWnd, uMsg, wParam, lParam)
Protected hdi.hd_item
result = CallWindowProc_(oldListIconCallback, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_NOTIFY
*pnmh.NMHDR = lparam
;--> Get handle to ListIcon header control
If *pnmh\code = #NM_CUSTOMDRAW
*pnmcd.NMCUSTOMDRAW = lparam
;--> Determine drawing stage
Select *pnmcd\dwDrawStage
Case #CDDS_PREPAINT
result = #CDRF_NOTIFYITEMDRAW
Case #CDDS_ITEMPREPAINT
text$=GetGadgetItemText(0, -1, *pnmcd\dwItemSpec)
If *pnmcd\uItemState & #CDIS_SELECTED
DrawFrameControl_(*pnmcd\hdc, *pnmcd\rc, #DFC_BUTTON, #DFCS_BUTTONPUSH|#DFCS_PUSHED)
*pnmcd\rc\left+2 : *pnmcd\rc\top+1
Else
DrawFrameControl_(*pnmcd\hdc, *pnmcd\rc, #DFC_BUTTON, #DFCS_BUTTONPUSH)
EndIf
*pnmcd\rc\bottom-1 : *pnmcd\rc\right-1
SetBkMode_(*pnmcd\hdc,#TRANSPARENT)
If *pnmcd\dwItemSpec&1
FillRect_(*pnmcd\hdc, *pnmcd\rc, brush)
SetTextColor_(*pnmcd\hdc, #Blue)
Else
FillRect_(*pnmcd\hdc, *pnmcd\rc, brush)
SetTextColor_(*pnmcd\hdc, #Red)
EndIf
If *pnmcd\rc\right>*pnmcd\rc\left
DrawText_(*pnmcd\hdc, @text$, Len(text$), *pnmcd\rc, #DT_CENTER|#DT_VCENTER|#DT_SINGLELINE|#DT_END_ELLIPSIS)
EndIf
result = #CDRF_SKIPDEFAULT
EndSelect
EndIf
EndSelect
ProcedureReturn result
EndProcedure
Procedure liCB()
InvalidateRect_(GadgetID(0),0,1)
EndProcedure
UsePNGImageDecoder()
LoadImage(0, GetTemporaryDirectory()+"890FX-Deluxe4(m).png", 0)
ResizeImage(0,1024,768)
If OpenWindow(0, 0, 0, 1024, 768, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess|#PB_Window_Invisible)
ImageGadget(1, 0, 0, 1024, 768, ImageID(0))
DisableGadget(1,1)
ListIconGadget(0, 175, 150, 700, 500, "No.", 30, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
SetGadgetColor(0,#PB_Gadget_FrontColor,$FFFFFF)
SetGadgetColor(0,#PB_Gadget_LineColor,$FFFFFF)
imgID = GrabImage(0,1,175,178,700,500) ;The grabbed dimension is up to you
CreateImage(2,700,500,24,$FFFFFF)
StartDrawing(ImageOutput(2))
DrawAlphaImage(imgID,0,0,150)
StopDrawing()
FreeImage(1)
HideGadget(0,1)
hHeader = SendMessage_(GadgetID(0), #LVM_GETHEADER, 0, 0)
AddGadgetColumn(0, 1, "Player names", 150)
AddGadgetColumn(0, 2, "Pos", 50)
AddGadgetColumn(0, 3, "KP", 35)
AddGadgetColumn(0, 4, "TA", 35)
AddGadgetColumn(0, 5, "PS", 35)
AddGadgetColumn(0, 6, "SH", 35)
AddGadgetColumn(0, 7, "PC", 35)
AddGadgetColumn(0, 8, "HE", 35)
AddGadgetColumn(0, 9, "ST", 35)
AddGadgetColumn(0, 10, "SP", 35)
AddGadgetColumn(0, 11, "BC", 35)
AddGadgetColumn(0, 12, "FT", 35)
AddGadgetColumn(0, 13, "PF", 35)
;Next
;Add some data
For b=0 To 99; Add 100 rows.
AddGadgetItem(0,-1,"")
Next
For i = 0 To 99
For j = 0 To 50
SetGadgetItemText(0,i,Str(i+j),j)
Next j
Next i
oldListIconCallback = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @SubclassedListIcon())
HideGadget(0,0)
HideWindow(0,0)
lbk.LVBKIMAGE
lbk\ulFlags = #LVBKIF_STYLE_TILE | #LVBKIF_SOURCE_HBITMAP
lbk\hbm = ImageID(2)
SendMessage_(GadgetID(0), #LVM_SETBKIMAGE, 0, @lbk)
BindGadgetEvent(0,@liCB())
Repeat
WaitWindowEvent(1)
Until GetAsyncKeyState_(#VK_ESCAPE) & $8000 = $8000
DeleteObject_(brush)
EndIf