|
| System ikoner Fra : Lasse Eskildsen |
Dato : 03-06-03 20:46 |
|
Hej
Jeg vil gerne bruge en listview til at vise nogle filer. Jeg har også fået
tilføjet filerne, men er det muligt at finde ud af hvilket ikon der hører
til filen, og så vise den i listview'en, ligesom når man gør det med en
imagelist?
Håber der er nogen der kan hjælpe
--
Lasse
| |
Johnny E Jensen (03-06-2003)
| Kommentar Fra : Johnny E Jensen |
Dato : 03-06-03 21:10 |
|
Hej Lasse
Jeg fandt engang denne rutine. Placer nedenstående i et module, og du kan nu
extracte ikonet filen benytter.
Rutinen skal nok tilpasses så den kan add image til et ImageList - så du
vise den i din listview.
/johnny
>
Option Explicit
Private Const SHGFI_DISPLAYNAME = &H200
Private Const SHGFI_ICON = &H100
Private Const SHGFI_SYSICONINDEX = &H4000 ' get system icon index
Private Const SHGFI_LARGEICON = &H0 ' get large icon
Private Const SHGFI_SMALLICON = &H1 ' get small icon
Private Const ILD_TRANSPARENT = &H1
Public Const MAX_PATH = 260
Private Type SHFILEINFO 'Structure used by SHGetFileInfo
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type
Private Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl&,
ByVal i&, ByVal hDCDest&, ByVal x&, ByVal y&, ByVal flags&) As Long
Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias
"SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long,
psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
Public Function ExtractIcon(picImage As PictureBox, sFile As String)
Dim himl As Long
Dim lpzxExeName As String
Dim lRet As Long
Dim sWinPath As String
Dim shinfo As SHFILEINFO
lpzxExeName = sFile
himl = SHGetFileInfo(lpzxExeName, 0&, shinfo, Len(shinfo),
SHGFI_SYSICONINDEX Or SHGFI_SMALLICON)
If himl <> 0 Then
picImage.AutoRedraw = True
lRet = ImageList_Draw(himl, shinfo.iIcon, picImage.hDC, 0, 0,
ILD_TRANSPARENT)
picImage.Refresh
ExtractIcon = True
End If
End Function
| |
Lasse Eskildsen (03-06-2003)
| Kommentar Fra : Lasse Eskildsen |
Dato : 03-06-03 22:13 |
|
Mange tak for hjælpen, det fungerede perfekt efter lidt modificering!
--
Lasse
"Johnny E Jensen" <emde@emde123456.dk> skrev i en meddelelse
news:3edd00b4$0$48909$edfadb0f@dtext02.news.tele.dk...
> Hej Lasse
> Jeg fandt engang denne rutine. Placer nedenstående i et module, og du kan
nu
> extracte ikonet filen benytter.
> Rutinen skal nok tilpasses så den kan add image til et ImageList - så du
> vise den i din listview.
>
> /johnny
> >
> Option Explicit
>
> Private Const SHGFI_DISPLAYNAME = &H200
> Private Const SHGFI_ICON = &H100
> Private Const SHGFI_SYSICONINDEX = &H4000 ' get system icon index
> Private Const SHGFI_LARGEICON = &H0 ' get large icon
> Private Const SHGFI_SMALLICON = &H1 ' get small icon
> Private Const ILD_TRANSPARENT = &H1
> Public Const MAX_PATH = 260
> Private Type SHFILEINFO 'Structure used by SHGetFileInfo
> hIcon As Long
> iIcon As Long
> dwAttributes As Long
> szDisplayName As String * MAX_PATH
> szTypeName As String * 80
> End Type
> Private Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl&,
> ByVal i&, ByVal hDCDest&, ByVal x&, ByVal y&, ByVal flags&) As Long
> Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias
> "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long,
> psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As
Long
>
> Public Function ExtractIcon(picImage As PictureBox, sFile As String)
> Dim himl As Long
> Dim lpzxExeName As String
> Dim lRet As Long
> Dim sWinPath As String
> Dim shinfo As SHFILEINFO
>
> lpzxExeName = sFile
> himl = SHGetFileInfo(lpzxExeName, 0&, shinfo, Len(shinfo),
> SHGFI_SYSICONINDEX Or SHGFI_SMALLICON)
> If himl <> 0 Then
> picImage.AutoRedraw = True
> lRet = ImageList_Draw(himl, shinfo.iIcon, picImage.hDC, 0, 0,
> ILD_TRANSPARENT)
> picImage.Refresh
> ExtractIcon = True
> End If
> End Function
>
>
>
| |
Ole Nielsby (03-06-2003)
| Kommentar Fra : Ole Nielsby |
Dato : 03-06-03 21:15 |
|
Lasse Eskildsen <Leskil@webspeed.dk> skrev:
> Hej
> Jeg vil gerne bruge en listview til at vise nogle filer. Jeg har også fået
> tilføjet filerne, men er det muligt at finde ud af hvilket ikon der hører
> til filen, og så vise den i listview'en, ligesom når man gør det med en
> imagelist?
Prøv evt. at kigge på Win32-funktionen SHGetFileInfo. Jeg har ikke
prøvet at bruge den fra VB, men det burde være muligt.
ON/Fjern sneglen fra min svaradresse
| |
|
|