Rubrik: Grafik & Zeichnen | 15.11.01 |
DrawIconEx-Funktion Diese Funktion zeichnet ein Icon, Cursor oder einen animierten Cursor auf ein Device-Context, wobei Position, Größe und Frame des animierten Cursors gewählt werden können. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 8.599 |
Deklaration:
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
Beschreibung:
Diese Funktion zeichnet ein Icon, Cursor oder einen animierten Cursor auf ein Device-Context, wobei Position, Größe und Frame des animierten Cursors gewählt werden können. Auf Wunsch kann die Funktion die Position, an der das Icon gezeichnet werden soll, bereits im Vorfeld mit einer bestimmten Farbe füllen.
Parameter:
hdc | Erwartet den Handle des Device's auf dem das Icon oder der Cursor gezeichnet werden soll. |
xLeft | Angabe der horizontale Position (x-Koordinate) in Pixel, an der das Icon gezeichnet werden soll. |
yTop | Angabe der vertikalen Position (y-Koordinate) in Pixel, an der das Icon gezeichnet werden soll. |
hIcon | Handle des zu zeichnenden Icons oder Cursors |
cxWidth | Breite des zu zeichnenden Elements (ggf. wird das Icon gedehnt oder gestaucht) |
cyWidth | Höhe des zu zeichnenden Elements (ggf. wird das Icon gedehnt oder gestaucht) |
istepIfAniCursor | Index des Frames, der angezeigt werden soll, wenn es sich um einen animierter Cursor handelt |
hbrFlickerFreeDraw | Handle zu einen Brush, welcher benutzt werden soll, um den Hintergrund des Icons auszufüllen. Wird hier eine "0" übergeben, so wird kein Hintergrund gezeichnet. |
diFlags | Eine oder eine Kombination aus mehreren der "diFlags"-Konstanten. |
diFlags Konstanten:
' Das Icon wird unter Verwendung des vom System definierten ' Bildes gezeichnet, nicht mit dem vom Anwender vorgegebenen Bild Const DI_COMPAT = &H4 ' Zeichnet das Icon in seiner Originalgröße ' (cxWidth und cyWidth werden ignoriert) Const DI_DEFAULTSIZE = &H8 ' Zeichnet nur die Bilddaten des Icons/Cursors Const DI_IMAGE = &H2 ' Zeichnet nur die Maske des Icons/Cursors Const DI_MASK = &H1 ' Zeichnet Maske und Bilddaten Const DI_NORMAL = &H3
Rückgabewert:
War der Funktionsaufruf erfolgreich, ist der Rückgabewert "ungleich 0", andernfalls wird "0" zurückgegeben. Für erweiterte Fehlerinformationen können Sie die GetLastError-Funktion aufrufen.
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 ' Das Icon wird unter Verwendung des vom System definierten ' Bildes gezeichnet, nicht mit dem vom Anwender vorgegebenen Bild Private Const DI_COMPAT = &H4 ' Zeichnet das Icon in seiner Originalgröße ' (cxWidth und cyWidth werden ignoriert) Private Const DI_DEFAULTSIZE = &H8 ' Zeichnet nur die Bilddaten des Icons/Cursors Private Const DI_IMAGE = &H2 ' Zeichnet nur die Maske des Icons/Cursors Private Const DI_MASK = &H1 ' Zeichnet Maske und Bilddaten Private Const DI_NORMAL = &H3 Private hSmallIcons() As Long Private hLargeIcons() As Long
Private Sub Form_Load() Dim RetVal As Long Dim 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 im Array 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 ' Vor 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