Ajout d'images dans une ListIconGadget()
Publié : sam. 08/mai/2004 22:26
J'ai repris le code de Denis , et j'ai vainement tenté de mettre des images dans une listIconGadget(), et rien à faire.J'ai fait des essais avec des fichiers .PNG et .BMP.
Bon là je colle mon dernier essai , mais j'ai aussi fait des essais avec ces lignes en dehors de la procedure importer() et ça ne fonctionnait pas mieux . Alors qu'est-ce que je fais mal ?
Bon là je colle mon dernier essai , mais j'ai aussi fait des essais avec ces lignes en dehors de la procedure importer() et ça ne fonctionnait pas mieux . Alors qu'est-ce que je fais mal ?
Code : Tout sélectionner
;modif de dernière minute , avant le create image était en dehors de la procedure !
If CountGadgetItems(#ListIconGadget1)=0
;create an Image List : first And second param are icon size
Hwnd_ListSmall = ImageList_Create_(ImageWidth(),ImageHeight(),#ILC_MASK | #ILC_COLOR32, 0, 30)
;assign the image list to the ListIconGadget
SendMessage_(GadgetID(#ListIconGadget1), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd_ListSmall)
EndIf
Code : Tout sélectionner
UseJPEGImageDecoder()
UsePNGImageDecoder()
Structure LVITEM
Mask.l
iItem.l
iSubItem.l
State.l
stateMask.l
pszText.l
cchTextMax.l
iImage.l
lParam.l
iIndent.l
iGroupId.l
cColumns.l
puColumns.l
EndStructure
Enumeration
#FenetrePrincipale
#ListIconGadget1
#Image
EndEnumeration
;/Le menu
Enumeration
#MenuImporterTiles
#MenuQuitter
#MenuAProposDe
EndEnumeration
Procedure AddItem(gadget.l, Row.l, Column.l, Text$, ImageIndex.l)
; add an item with an image from the ListImage or a subitem without image
; put -1 to ImageIndex to not display Image
; fill up var to set subitem icon and text
var.LVITEM
var\Mask = #LVIF_IMAGE | #LVIF_TEXT
var\iItem = Row ; row number
var\iSubItem = Column ; subitem
var\pszText = @Text$ ; text to set
var\iImage = ImageIndex ; index of icon in the list
; set text + icon in the listicongadget item/subitem
If Column
SendMessage_(GadgetID(gadget), #LVM_SETITEM, 0, @var)
Else
SendMessage_(GadgetID(gadget), #LVM_INSERTITEM, 0, @var)
EndIf
EndProcedure
Procedure Importer()
NomFichier$ = OpenFileRequester("Importe Tiles", "","Fichiers Images|*.BMP;*.PNG;*.JPG" , 0,#PB_Requester_MultiSelection)
If NomFichier$ ; teste si la chaine existe
Repeat
Fichier$ = GetFilePart(NomFichier$) ; récupère seulement le nom de fichier
If LoadImage(1,NomFichier$)
;modif de dernière minute , avant le create image était en dehors de la procedure !
If CountGadgetItems(#ListIconGadget1)=0
;create an Image List : first And second param are icon size
Hwnd_ListSmall = ImageList_Create_(ImageWidth(),ImageHeight(),#ILC_MASK | #ILC_COLOR32, 0, 30)
;assign the image list to the ListIconGadget
SendMessage_(GadgetID(#ListIconGadget1), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd_ListSmall)
EndIf
IndexImage=ImageList_AddIcon_(Hwnd_ListSmall,ImageID())
AddItem(#ListIconGadget1,CountGadgetItems(#ListIconGadget1),0,Fichier$,IndexImage)
FreeImage(1)
EndIf
NomFichier$ = NextSelectedFileName()
Until NomFichier$ = ""
EndIf
EndProcedure
; ***************************************************************************
If OpenWindow(#FenetrePrincipale, 0, 0, 420, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "")
If CreateGadgetList(WindowID()) And ListIconGadget(#ListIconGadget1, 10, 55, 400, 236, "Tiles", 398 / 5 + 70,#PB_ListIcon_FullRowSelect )
;/ un petit menu
If CreateMenu(0,WindowID(#FenetrePrincipale))
MenuTitle("Fichier")
MenuItem(#MenuImporterTiles,"Importer Tiles...")
MenuItem(#MenuQuitter,"Quitter")
MenuTitle("Aide")
MenuItem(#MenuAProposDe,"A propos de...")
EndIf
;create an Image List : first And second param are icon size
;Hwnd_ListSmall = ImageList_Create_(128, 128,#ILC_MASK | #ILC_COLOR32, 0, 30)
; assign the image list to the ListIconGadget
;SendMessage_(GadgetID(#ListIconGadget1), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd_ListSmall)
;Récupère la taille des images
;ImageList_GetIconSize_(Hwnd_ListSmall,@cx,@cy)
;Debug cx : Debug cy
Repeat
Select WaitWindowEvent()
Case #PB_EventCloseWindow
Quit=1
Case #PB_Event_Menu
Select EventMenuID()
;/Partie
Case #MenuQuitter : Quit=1
Case #MenuImporterTiles
Importer()
EndSelect
EndSelect
Until Quit
EndIf
EndIf
ImageList_Destroy_(Hwnd_ListSmall)
End