Rubrik: Maus & Tastatur · Maus | VB-Versionen: VB2005, VB2008 | 21.03.11 |
Animierte Mauszeiger verwenden Sie wollten schon mal farbige und animierte Mauszeiger in Ihrem Programm verwenden? Dann ist dieser Tipp genau das richtige für Sie! | ||
Autor: Andreas Fleischmann | Bewertung: | Views: 10.470 |
ohne Homepage | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Haben Sie schon einmal versucht Ihr Programm mit animierten Mauszeigern aufzupeppen? Vielleicht haben Sie es zuerst mit einem Code wie folgendem versucht:
Private Sub CursorLoad() Handles Me.Load Me.Cursor = New Windows.Forms.Cursor(Application.StartupPath & "\x.ani") End Sub
Doch leider meldet sich der Debugger mit folgendem Fehler:
--- ArgumentException wurde nicht behandelt ----------------------- Ungültiges Bildformat. Die Bilddatei ist möglicherweise beschädigt. Parametername: Stream
Wenn man ein wenig recherchiert, stößt man schnell auf folgendem Artikel:
http://msdn.microsoft.com/de-de/library/kkw8k45d(v=VS.100).aspx
Darin steht in einem Hinweisfeld folgendes:
Animierte Cursor (ANI-Dateien) werden von der Cursor-Klasse nicht unterstützt.
Schließlich fand ich folgende Lösung, die wie so oft, auf das Windows-API zurückgreift:
Imports System.Runtime.InteropServices Public Module MausFunktionen <System.Runtime.InteropServices.DllImport("user32.dll", _ EntryPoint:="LoadCursorFromFile", _ SetLastError:=True, CharSet:=CharSet.Unicode)> _ Private Function LoadCursorFromFile(ByVal Filename As String) As IntPtr End Function Public Function LoadCursor(ByVal Filename As String) As Windows.Forms.Cursor Dim HandleCursor As IntPtr = LoadCursorFromFile(Filename) If IntPtr.Zero.Equals(HandleCursor) Then Throw New Exception("Der Cursor konnte nicht geladen werden! " & _ "Möglicherweise ist die Datei beschädigt.") Return Nothing Else Return New Windows.Forms.Cursor(HandleCursor) End If End Function End Module
Die Anwendung der Funktion ist nun auch nicht komlizierter als vorher:
Private Sub CursorLoad() Handles Me.Load Me.Cursor = MausFunktionen.LoadCursor(Application.StartupPath & "\x.ani") End Sub
Manchmal ist es übrigens sinnvoller den Code des Load-Events in den Konstruktor zu Packen.
Im Beispielprojekt auf der vb@rchiv CD befindet sich ein animierter Cursor einer Pipette.