vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Grafik & Zeichnen15.03.02
ExtractIconEx-Funktion

Diese Funktion bietet ein wenig mehr Funktionalität als die ExtractIcon-Funktion. Eines dieser erweiterten Features ist, alle vorhandenen Icons einer Datei in Arrays zu speichern.

Betriebssystem:  Win95, Win98, WinNT 4.0, Win2000, WinMEViews:  9.272 

Deklaration:

Declare Function ExtractIconEx Lib "shell32.dll" _
  Alias "ExtractIconExA" ( _
  ByVal lpszFile As String, _
  ByVal nIconIndex As Long, _
  phiconLarge As Long, _
  hiconSmall As Long, _
  ByVal nIcons As Long) As Long


Beschreibung:

Diese Funktion bietet ein wenig mehr Funktionalität als die ExtractIcon-Funktion. Eines dieser erweiterten Features ist, alle vorhandenen Icons einer Datei in Arrays zu speichern.


Parameter:

lpszFileErwartet den Dateinamen der Datei, die die Icons enthält, die geladen werden sollen.
nIconIndexWird hier der Wert "-1" und die beiden Optionen "phIconLarge" und "phIconSmall" auf "0" gesetzt, so gibt die Funktion die Anzahl der vorhandenen Icons innerhalb der Datei zurück. Wird hier einepositive Zahl übergeben, so ist das der Index des Icons bei dem das Extrahieren gestartet wir. Übergibt man hierz. B. eine "2", so wird für den Fall dass die Datei mindestens 3 Icons hat (0 Based Index) das Extrahieren bei 2 gestartet und bei "nIconIndex + nIcons" gestoppt. Die Arrays die man übergeben hat sind dann mit den Handles der Icons gefüllt dieextrahiert wurden.
phiconLargeErwartet ein Array das genug Dimensionen hat um diegroßen Icons zu empfangen. Soll kein Icon extrahiert werden kann man hier eine "0" übergeben.
phiconSmallErwartet ein Array das genug Dimensionen hat um diekleinen Icons zu empfangen. Soll kein Icon extrahiert werden kann man hier eine "0" übergeben.
nIconsErwartet die Anzahl der Icons die von dem Index in "nIconIndex" ausextrahiert werden sollen. Wollen Sie z. B. die großen und kleinen Icons mit dem Index2, 3, 4 und 5 extrahieren, so dimensionieren Sie 2 Arrays mit 4 Feldern, geben den "nIconIndex" 2 ein und übergeben hier denWert "4".


Rückgabewert:

Wurde "nIconIndex" auf "-1" gesetzt so gibt die Funktion die Anzahl der vorhandenen Icons der gefundenen Datei zurück. Andernfalls liefert die Funktion für einen erfolgreichen Aufruf die Anzahl der erfolgreichextrahierten Icons zurück bzw. bei einem Fehler "0".

Beispiel:

Private Declare Function ExtractIconEx Lib "shell32.dll" _
  Alias "ExtractIconExA" ( _
  ByVal lpszFile As String, _
  ByVal nIconIndex As Long, _
  phiconLarge As Long, _
  phiconSmall As Long, _
  ByVal nIcons As Long) As Long
Private Declare Function DrawIconEx Lib "user32.dll" ( _
  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.dll" (ByVal hIcon As Long) As Long
 
Private Const DI_COMPAT = &H4 ' benutzt das als Standard festgelegte benutzerdefinierte Bild
Private Const DI_DEFAULTSIZE = &H8 ' zeichnet das Icon/Cursor mit der Standardgröße
Private Const DI_IMAGE = &H2 ' zeichnet nur die Bilddaten des Icons/Cursors
Private Const DI_MASK = &H1 ' zeichnet nur die Maske des Icons/Cursors
Private Const DI_NORMAL = &H3 ' zeichnet Maske und Bilddaten
 
Private hSmallIcons() As Long, hLargeIcons() As Long
Private Sub Form_Load()
  Dim RetVal As Long, IconNum As Long
 
  ' Anzahl Icons in der Datei ermitteln
  IconNum = ExtractIconEx("c:\windows\system\pifmgr.dll", -1, 0&, 0&, 0&)
  If IconNum = 0 Then
    MsgBox "Diese Datei hat keine Icons"
    Exit Sub
  End If
 
  ' Scrollbalken einrichten
  HScroll1.Max = IconNum - 1
 
  ' Alle Icons der Datei in Arrays speichern
  ReDim hSmallIcons(IconNum - 1)
  ReDim hLargeIcons(IconNum - 1)
  RetVal = ExtractIconEx("c:\windows\system\pifmgr.dll", 0&, hLargeIcons(0),  _
  hSmallIcons(0), IconNum)
End Sub
' beim Scrollen die Icons auf die Form zeichnen
Private Sub HScroll1_Change()
  Me.Cls
  RetVal = DrawIconEx(Me.hDC, 5, 5, hLargeIcons(HScroll1.Value), 0&, 0&, 0&, 0&, DI_NORMAL) 
  DrawIconEx Me.hDC, 5, 40, hSmallIcons(HScroll1.Value), 0&, 0&, 0&, 0&, DI_NORMAL 
  Me.Refresh
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  On Error Resume Next
 
  ' vVor dem Beenden Icons zerstören und Ressourcen wieder freigeben
  For i = 0 To UBound(hSmallIcons)
    DestroyIcon hSmallIcons(i)
    DestroyIcon hLargeIcons(i)
  Next i
End Sub

Diese Seite wurde bereits 9.272 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel