Toujours disposé à bénéficier d’autant de fonctionnalité Get qu’il y a de fonctionnalité Set, je dois avouer qu’il ne peut y avoir toujours stricte équivalence.
Ainsi, en cherchant le moyen de récupérer l’image d’un élément d’un ListIconGadget, j’ai constaté qu’il n’etait pas évident que cette fonction retourne le #image qui a servit lors de la création.
C’est d’ailleurs normal, car il est légitime de vouloir aussi récupérer une image d’un ListIconGadget que l’on n’a pas construit.
Donc un pointeur sur image dans ce cas est une possibilité.
Pour ma part, voici ma solution actuelle :
Code : Tout sélectionner
Procedure.l GetListIconItemImage(Gadget.l, Item.l)
lv.LVITEM\mask = #LVIF_IMAGE
lv\iItem = item
If SendMessage_(GadgetID(Gadget), #LVM_GETITEM, 0, @lv.LVITEM); on récuppère les info sur l'élément du ListIconGadget à traiter
Hwnd_ListSmall = SendMessage_(GadgetID(Gadget), #LVM_GETIMAGELIST, #LVSIL_SMALL, 0); on récuppère la liste des images du ListIconGadget
If Hwnd_ListSmall
ImageList_GetImageInfo_(Hwnd_ListSmall, 0, @pImageInfo.IMAGEINFO); on récupère les info d'une image de la liste (ici la premiere)
Image=CreateImage (#PB_Any, pImageInfo\rcImage\right, pImageInfo\rcImage\bottom); pour en connaitre les dimensions et crée notre image
hDC=StartDrawing (ImageOutput (Image))
ImageList_Draw_(Hwnd_ListSmall,lv\iImage,hDC,0, 0,#ILD_TRANSPARENT); on dessine l'image demandée
StopDrawing ()
EndIf
EndIf
ProcedureReturn Image; on retourne l'image
EndProcedure
Pour un ListIconGadget donné #Gadget, la fonction GetListIconItemImage() retourne un identifiant PB de l’image associée à l’élément Item, après l'avoir reconstituée.
On peut modifier le code pour imposer l'identifiant de l'image, mais je ne vois pas de solution à base de pointeur...