Basic Univers
Procedure.l ExtractSmallIconFile(IconPath.s)
Global hImageListS16.l
If hImageListS16 = 0
hImageListS16.l = SHGetFileInfo_("c:\", 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX | #SHGFI_SMALLICON)
ImageList_SetBkColor_(hImageListS16, #CLR_NONE)
EndIf
SHGetFileInfo_(IconPath, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX | #SHGFI_SMALLICON)
IconID.l = ImageList_GetIcon_(hImageListS16, InfosFile\iIcon, #ILD_NORMAL)
ProcedureReturn IconID
EndProcedure
Procedure.l ExtractLargeIconFile(IconPath.s)
Global hImageListS32.l
If hImageListS32 = 0
hImageListS32.l = SHGetFileInfo_("c:\", 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX | #SHGFI_LARGEICON)
ImageList_SetBkColor_(hImageListS32, #CLR_NONE)
EndIf
SHGetFileInfo_(IconPath, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX | #SHGFI_LARGEICON)
IconID.l = ImageList_GetIcon_(hImageListS32, InfosFile\iIcon, #ILD_NORMAL)
ProcedureReturn IconID
EndProcedure
Procedure ListIconGadgetXP(GadgetID.l, x.l, y.l, tx.l, ty.l, colonne.s, largeur.l, options.l)
ListIconGadget(GadgetID, x, y, tx, ty, colonne, largeur, options)
#LVM_SETEXTENDEDLISTVIEWSTYLE = 4150 : #LVS_EX_SUBITEMIMAGES = 2
hImageListS.l = SHGetFileInfo_("c:\", 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX | #SHGFI_SMALLICON)
ImageList_SetBkColor_(hImageListS, #CLR_NONE)
SendMessage_(GadgetID(GadgetID), #LVM_SETIMAGELIST, #LVSIL_SMALL, hImageListS)
SendMessage_(GadgetID(GadgetID), #LVM_SETEXTENDEDLISTVIEWSTYLE , #LVS_EX_SUBITEMIMAGES, #LVS_EX_SUBITEMIMAGES)
EndProcedure
Procedure AddGadgetItemXP(GadgetID.l, Pos.l, Texte.s, IconPath.s)
SHGetFileInfo_(IconPath, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX | #SHGFI_SMALLICON)
If Pos = - 1
Pos = CountGadgetItems(GadgetID) + 1
EndIf
var.lv_item
Var\mask = #LVIF_IMAGE | #LVIF_TEXT
Var\iSubItem = 0
Var\iItem = Pos
Var\pszText = @Texte
Var\iImage = InfosFile\iIcon
SendMessage_(GadgetID(GadgetID), #LVM_INSERTITEM, 0, @Var)
EndProcedure
#Window_0 = 0
#SizeWindowX = 300
#SizeWindowY = 200
Procedure Open_Window_0()
If OpenWindow(#Window_0, 400, 400, #SizeWindowX , #SizeWindowY, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "essai icône")
If CreateGadgetList(WindowID())
ButtonGadget(2, 40, 5, 200, 25, "Ouvrir un fichier")
ImageGadget(0, 0, 0 , 32, 32, ExtractLargeIconFile(""))
ListIconGadgetXP(1, 0, 40, 300, 160, "fichiers", 200, #PB_ListIcon_CheckBoxes)
EndIf
EndIf
EndProcedure
Procedure bouton()
IconPath.s = OpenFileRequester("", "c:\", "Tous les fichiers|*.*", 0)
If IconPath <> ""
FreeGadget(0)
ImageGadget(0, 0, 0 , 32, 32, ExtractLargeIconFile(IconPath))
AddGadgetItemXP(1, - 1, IconPath, IconPath)
EndIf
EndProcedure
Open_Window_0()
ClicDroit = 0
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
Select EventGadgetID()
Case 2
bouton()
EndSelect
EndIf
Until Event = #PB_EventCloseWindow
End