Rubrik: Maus & Tastatur · Maus | VB-Versionen: VB5, VB6 | 25.10.07 |
Animierte Mauszeiger verwenden Standardmäßig kann man in VB keine animierten Mauszeiger anzeigen. Mit einem Trick in die Windows-API Kiste ist das aber dennoch möglich. | ||
Autor: Dieter Otter | Bewertung: | Views: 13.319 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Standardmäßig kann man in VB keine animierten Mauszeiger anzeigen. Mit einem Trick in die Windows-API Kiste ist das aber dennoch möglich. Auf diese Weise können Sie beispielsweise Ihren eigenen "Wait"-Cursor benutzen anstelle der Standard-Sanduhr.
Fügen Sie nachfolgenden Code in ein Modul ein:
Option Explicit ' Benötigte API-Deklarationen Private Declare Function LoadCursorFromFile Lib "user32" _ Alias "LoadCursorFromFileA" ( _ ByVal lpFileName As String) As Long Private Declare Function SetCursor Lib "user32" ( _ ByVal hCursor As Long) As Long Private Declare Function SetCapture Lib "user32" ( _ ByVal hwnd As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () As Long ' Window-Handle der Form, in der der animierte ' Cursor angezeigt werden soll Private hwnd As Long ' Mauszeiger - ursprüngliches Handle Private hCursorOld As Long ' Handle des neuen Mauszeigers Private hCursor As Long
' benutzerdefinierten Mauszeiger laden und anzeigen Public Function SetMouseCursor(ByVal nWnd As Long, _ ByVal sFile As String) As Boolean ' zunächst Mausereignisse eines früheren Aufrufs ' freigeben und ursprünglichen Cursor wiederherstellen ReleaseMouseCursor Dim nResult As Long ' Cursor aus Datei laden hCursor = LoadCursorFromFile(sFile) If hCursor <> 0 Then hwnd = nWnd ' Mausereignisse auf die Form umleiten SetCapture hwnd ' neuen Cursor festlegen hCursorOld = SetCursor(hCursor) SetMouseCursor = True End If End Function
' benutzerdefinierten Mauszeiger zerstören ' und ursprünglichen Cursor wiederherstellen Public Sub ReleaseMouseCursor() If hwnd <> 0 Then If hCursor <> 0 And hCursorOld <> hCursor Then SetCursor hCursorOld ReleaseCapture End If End If hwnd = 0 hCursor = 0 hCursorOld = 0 End Sub
Soll nun während einer bestimmten (länger dauerenden) Aktion ein eigener "Wait"-Cursor angezeigt werden, verwenden Sie folgenden Aufruf:
Private Sub DoSomething() ' eigenen animierten Mauszeiger laden und anzeigen SetMouseCursor Me.hWnd, App.Path & "\waitcursor.ani" ' hier die Aktion (Berechnung) etc. ' ... ' Standard-Mauszeiger wiederherstellen ReleaseMouseCursor End Sub