Newsgroup: it.comp.lang.visual-basic
Titolo: Caricare un'icona da DLL risorse

Ciao a tutti
in seguito agli "input" che ho ricevuto qualche post fa
ho pensato di usare le DLL di risorse anche per le icone.
Non ho ben capito però come usare l'output di LoadIcon per avere la mia 
icona, cioè come preparo i dati nel formato utile a VB (e al controllo 
ImageList)?
grazie
Dav

 ha scritto nel messaggio
news:Xns96017188...@130.133.1.4...

Forse ti sei perso la mia ultima risposta a quel thread (oppure non era
abbastanza chiara).
Non hai bisogno di "preparare" i dati. Se nel resource script vuoi includere una
risorsa di tipo icona che si trova in un file esterno (es. "MyIcon.ico", situato
in una certa cartella), è sufficiente che esso contenga una linea del tipo:
    MiaIconaDaCaricare ICON "C:\.....\Icons\MyIcon.ico"
Quando compili il file .RC con il Resource Compiler (RC.EXE), l'icona viene
incorporata nel file .RES.
Per caricarla a run-time:
    Set Picture1.Picture = LoadResPicture("MiaIconaDaCaricare", vbResIcon)
Ciao
Raf

 
grazie ma questo era chiarissimo :)
forse mi sono spiegato male..
volevo inserire le mie icone in una DLL standard esterna al mio EXE
in pratica usare il metodo che mi è stato suggerito per le stringhe
(loadLibrary, LoadString...) solo 2 cose non mi sono chiare:
1) la DLL standard che creo con VC++ (aggiungendo un file di risorse 
ovviamente compilato secondo le tue info) è il giusto tipo di DLL per le 
icone?
2)quale API uso per caricare poi dal mio exe le icone cosi incapsulate 
(in pratica quale è l'API equivalente di LoadString per le icone?)
grazie
Davide

 Davide
Prego
Ciao
Raf

 le funzioni da utilizzare.
[...]
Ho trovato del codice meglio strutturato (e che ho sperimentato) che può
senz'altro esserti utile:
Private Type PICTDESC
    cbSize As Long
    pictType As Long
    hIcon As Long
    hPal As Long
End Type
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" _
    (lpPictDesc As PICTDESC, riid As Any, ByVal fOwn As Long, _
    ipic As IPicture) As Long
' Convert an icon handle to a Picture object
Private Function IconToPicture(ByVal hIcon As Long) As Picture
Dim pic As PICTDESC
Dim guid(0 To 3) As Long
    ' initialize the PictDesc structure
    pic.cbSize = Len(pic)
    pic.pictType = vbPicTypeIcon
    pic.hIcon = hIcon
    ' this is the IPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
    ' we use an array of Long to initialize it faster
    guid(0) = &H7BF80980
    guid(1) = &H101ABF32
    guid(2) = &HAA00BB8B
    guid(3) = &HAB0C3000
    ' create the picture,
    ' return an object reference right into the function result
    OleCreatePictureIndirect pic, guid(0), True, IconToPicture
End Function
Bye
Raf

 ha scritto nel messaggio
news:Xns96017188...@130.133.1.4...

Puoi fare con questa
Private Declare Function ExtractIcon Lib "shell32.dll" _
    Alias "ExtractIconA" (ByVal hInst As Long, _
    ByVal lpszExeFileName As String, _
    ByVal nIconIndex As Long) As Long
hIcon = ExtractIcon(frm.hWnd, sFile, Index)
sFile=Path della DLL
Index=è l'indice dell'icona
Passando -1 come Index alla funzione viene restituito il Numero delle
Icone mentre passando l'Indice restituisce Hwnd dell'Icona
puntata.
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------