cs_Lolux
Messages postés159Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 septembre 2005
-
26 déc. 2002 à 13:38
Najdar
Messages postés29Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention20 mars 2006
-
4 nov. 2003 à 15:49
Salut à vous,
J'ai un treeview qui liste un série de fichiers. j'aimerai que le treeview affiche l'icone associé à chaque fichier comme dans l'explorateur windows.
J'ai trouvé une piste sur ce site avec l'api suivante :
'CONSTANTES
Const DI_MASK = &H1
Const DI_IMAGE = &H2
Const DI_NORMAL = DI_MASK Or DI_IMAGE
'API
Private Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
Private Sub Form_Paint()
Dim mIcon As Long
'Extract the associated icon
mIcon = ExtractAssociatedIcon(App.hInstance, "C:\Autoexec.bat", 2)
'Draw the icon on the form
DrawIconEx Me.hdc, 0, 0, mIcon, 0, 0, 0, 0, DI_NORMAL
'remove the icon from the memory
DestroyIcon mIcon
End Sub
mais le problème, c'est que un treeview ne peut être associé qu'à une imagelist... comment contourner le problème ?
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 26 déc. 2002 à 14:39
J'ai lu quelque chose là-dessus mais il faudrait que je retrouve le code.
Si j'ai bonne mémoire l'idée est la suivante :
- lors de l'ajout de fichier dans le treeviex, on détruit le contenu de l'imagelist;
- on récupère l'icône du fichier en question;
- on ajoute celle-ci dans l'imagelist;
- on reconnecte l'imagelist au treeview;
- et enfin on attribue l'icône de l'imagelist à l'élément qu'on vient d'ajouter au treeview.