This function prints all entries of a ListIconGadget.
Code: Select all
; Print ListIconGadget
; 2006 Hroudtwolf
; PureBasic-Lounge.de
; PB 4.00 Release
Procedure PrintListIconGadget (GadgetID)
Protected CountOfItems,result,hDC,RelXY
Protected ImageW,ImageH,ii.IMAGEINFO,hImage,x,rc.point
CountOfItems=CountGadgetItems(GadgetID)-1
If CountOfItems<1
ProcedureReturn #False
EndIf
result=SendMessage_ (GadgetID (GadgetID),#LVM_CREATEDRAGIMAGE,1,rc)
ImageList_GetImageInfo_(result,0,@ii)
ImageW=ii\rcImage\right
ImageH=ii\rcImage\bottom
ImageList_Destroy_(result)
hImage=CreateImage (#PB_Any,ImageW,ImageH*(CountOfItems+1))
hDC=StartDrawing (ImageOutput (hImage))
Box (0,0,ImageW,ImageH*(CountOfItems+1),$FFFFFF)
For x=0 To CountOfItems
result=SendMessage_ (GadgetID (GadgetID),#LVM_CREATEDRAGIMAGE,x,rc)
ImageList_Draw_(result,0,hDC,0,x*ImageH,#ILD_NORMAL )
ImageList_Destroy_(result)
Line (0,(x*ImageH)+ImageH,ImageW,0,$000000)
SendMessage_(GadgetID(GadgetID),#LVM_ENSUREVISIBLE,x,#True)
Next x
StopDrawing ()
If PrintRequester()
StartPrinting("ListIcon")
RelSize.f=PrinterPageWidth()/ImageWidth(hImage)
If StartDrawing (PrinterOutput ())
DrawImage (ImageID(hImage),0,0,ImageWidth(hImage)*RelSize.f,ImageHeight(hImage)*RelSize.f)
StopDrawing ()
EndIf
StopPrinting()
EndIf
FreeImage (hImage)
EndProcedure