Rubrik: Grafik & Zeichnen | 13.07.01 |
ExtractIcon-Funktion Extrahiert ein einzelnes Icon (Bildsymbol) aus einer *.dll, *.exe oder *.ico und gibt das Icon-Handle zurück. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 14.153 |
Deklaration:
Declare Function ExtractIcon Lib "shell32.dll" _ Alias "ExtractIconA" ( _ ByVal hInst As Long, _ ByVal lpszExeFileName As String, _ ByVal nIconIndex As Long) As Long
Beschreibung:
Diese Funktion extrahiert ein einzelnes Icon (Bildsymbol) aus einer *.dll, *.exe oder *.ico und gibt das Icon-Handle zurück. Über die Funktion DrawIcon kann das Icon angezeigt werden, mit DestroyIcon wird das Icon entfernt und die belegten Ressourcen wieder freigegeben.
Parameter:
hInst | Erwartet einen Verweis auf eine Instanz der Anwendung, die diese Funktion aufruft. |
lpszExeFileName | Vollständiger Dateiname (inkl. Pfadangabe), aus der die Icons extrahiert werden sollen. |
nIconIndex | Index des zu extrahierenden Icons (beginnend mit 0), "-1" um die gesamte Anzahl vorhandener Icons zu ermitteln |
Rückgabewert:
Bei erfolgreichem Funktionsaufruf mit einem gültigen Index-Verweis wird das Handle des Icons zurückgegeben. Wurde für nIconIndex der Wert -1 angegeben, so liefert die Funktion die Anzahl der Icons der Datei. Trat ein Fehler auf oder konnte keine entsprechendes Icon ermittelt werden, so wird der Wert 1 zurückgegeben.
Beispiel:
Private Declare Function PickIconDlg Lib "shell32.dll" _ Alias "#62" ( _ ByVal hwndOwner As Long, _ ByVal lpstrFile As String, _ ByVal nMaxFile As Long, _ lpdwIconIndex As Long) As Long Private Declare Function ExtractIcon Lib "shell32.dll" _ Alias "ExtractIconA" ( _ ByVal hInst As Long, _ ByVal lpszExeFileName As String, _ ByVal nIconIndex 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 Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
' Icon per Dialog wählen und in ein Bildfeld übertragen Private Sub Command1_Click() Dim hIco As Long, TmpIndex As Long, RetVal As Long, TmpIconFile As String * 256 ' Icon-Dialog aufrufen. ' Achtung!!! Unter Windows NT vorher in Unicode Konvertieren TmpIconFile = "c:\windows\system\pifmgr.dll" & vbNullChar RetVal = PickIconDlg(Me.hWnd, TmpIconFile, Len(TmpIconFile), TmpIndex) If RetVal = 0 Then MsgBox "Sie haben kein Icon gewählt", vbOKOnly + vbInformation, _ "Abbrechen" Exit Sub End If ' Extrahieren und Zeichnen hIcon = ExtractIcon(App.hInstance, Left$(TmpIconFile, InStr(1, _ TmpIconFile, vbNullChar) - 1), TmpIndex) Picture1.Cls DrawIcon Picture1.hdc, 0, 0, hIcon Picture1.Refresh DestroyIcon hIcon End Sub