|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
[VB6] ImageList con Icone di Sistema
salve vorrei fare in modo che una mia ImageList venga "riempita" con le varie icone di sistema riguardanti le "Unità Disco", le icone dei files...etc...
ora riguardo le icone dei files non ho molti problemi ma per ottenere e disegnare le altre invece trovo difficoltà e non riesco a capire il perchè: Codice:
Option Explicit
Public Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As Any, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
Public Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * 260
szTypeName As String * 80
End Type
Public Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
Public Function IconaFile(ByVal Ext As String, IML As ImageList, _
Optional ByVal SmallIcon As Boolean = False) As Integer
' aggiunge l'icona legata al tipo di file (ext = estensione) ad IML (ImageList)
' e restituisce l'indice della nuova icona aggiunta ad IML
Dim esisteIco As Boolean
Dim xImage As ListImage
Dim retval As Long
Dim info As SHFILEINFO ' receives information about the file
retval = SHGetFileInfo("x." & Ext, FILE_ATTRIBUTE_ARCHIVE, info, Len(info), _
SHGFI_USEFILEATTRIBUTES Or SHGFI_TYPENAME Or SHGFI_ICON Or SHGFI_SMALLICON)
IML.ListImages.Add , Ext, ConvertIcon(info.hIcon)
IconaFile = IML.ListImages(Ext).Index
' Destroy the icon handle to save resources.
retval = DestroyIcon(info.hIcon)
End Function
Public Function ConvertIcon(hIcon) As Picture
Dim NewPic As Picture
Dim PicConv As PicBmp
Dim IGuid As GUID
On Error GoTo GestioneErrori
If hIcon = 0 Then Exit Function
With PicConv
.Size = Len(PicConv)
.Type = vbPicTypeIcon
.hBmp = hIcon
End With
IGuid.Data1 = &H20400
IGuid.Data4(0) = &HC0
IGuid.Data4(7) = &H46
Call OleCreatePictureIndirect(PicConv, IGuid, True, NewPic)
Set ConvertIcon = NewPic
Exit Function
GestioneErrori:
Debug.Print Err.Number, Err.Description
End Function
"Desktop" "Unità Disco" "Directory Speciali" non mi funziona più niente....chi sa come aiutarmi? P.S. riesco però a stampare la giusta icona all'interno di una form tramite il comando: Codice:
Private Sub Form_Load()
Dim hImage As Long
Dim udtFI As SHFILEINFO
'set the graphics mode of form1 to persistent
Me.AutoRedraw = True
'get the handle of the system image list that contains the large icon images
hImage = SHGetFileInfo("c:\", ByVal 0&, udtFI, Len(udtFI), SHGFI_SYSICONINDEX Or SHGFI_LARGEICON)
'draw the icon (normal)
ImageList_Draw hImage, udtFI.iIcon, Me.hDC, 0, 0, ILD_TRANSPARENT
End Sub
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:55.



















