Bonsoir à tous !!!
Me revoilà avec encore un soucis pour les icones.
Voilà ce que je veux faire : Afficher dans un Treeview un icone et le nom d'un fichier qui vient d'être cliqué dans un Filelist.
Pour y arriver, je compte extraire l'icone du fichier en question, l'afficher dans un picturebox, ensuite le sauver dans un imagelist et enfin l'incorporer dans un treeview. Je pense que c'est la méthode à suivre, si ce n'est pas la bonne, faitez-le moi savoir et ne lisez même pas la suite ;))
J'ai bien compris le fonctionnement des API ExtractAssociatedIcon et DrawIcon.
Cependant, je n'arrive qu'à afficher l'icone dans un picturebox, mais apparement elle n'est pas correctement sauvée dans l'imagelist
J'ai vu dans plusieurs bouts de codes la ligne suivante : Picture1.Picture = Picture1.Image.
Or chez moi, lorsque cette ligne est exécutée, l'icone est effacée de ma picturebox, et de toute façon n'est toujours pas sauvé dans l'imagelist.
J'aurais vraiment besoin d'un coup de pouce pour comprendre ce qui cloche, et comment y arriver.
Merci d'avance, et voici le code que j'ai écrit jusqu'à maintenant :
Option Explicit
Private Declare Function ExtractFileIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" _
(ByVal hInst As Long, _
ByVal lpIconPath As String, _
lpiIcon As Long) _
As Long
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal hIcon As Long) _
As Long
Private Sub Dir1_Change()
Me.File1.Path = Me.Dir1.Path
End Sub
Private Sub Drive1_Change()
Dim fso As Scripting.FileSystemObject
Set fso = New FileSystemObject
Me.Dir1.Path = Me.Drive1
End Sub
Private Sub File1_Click()
Dim fso As Scripting.FileSystemObject
Dim fich As Scripting.File
Dim hIcon As Long
Dim List_Image As ListImage
Me.Picture1.Picture = LoadPicture()
Set fso = New FileSystemObject
Set fich = fso.GetFile(fso.BuildPath(Me.Dir1.Path, Me.File1.List(Me.File1.ListIndex)))
hIcon = ExtractFileIcon(App.hInstance, fich.Path, 1)
Call DrawIcon(Picture1.hdc, 0, 0, hIcon)
Me.ImageList1.ListImages.Add , "K" & fich.Path, Me.Picture1.Image
Me.TreeView1.Nodes.Add , , , fich.Name, "K" & fich.Path
End Sub
Private Sub Form_Load()
Me.Drive1.Drive = "c:\"
Me.Dir1.Path = "c:\"
Me.ImageList1.ImageHeight = 16
Me.ImageList1.ImageWidth = 16
End Sub