Tipp 0098 Animierten Cursor verwenden
Autor/Einsender:
Datum:
  Detlev Schubert
14.07.2001
Entwicklungsumgebung:   VB 5
Leider wird oft behauptet, dass es ohne OCX nicht möglich sei, einen animierten Cursor vom Typ *.ani in VB darzustellen. Das dies sehr wohl ohne Zusatz-Steuerelement geht, mit einem tiefen Griff in die Trickkiste und mit Hilfe einiger API-Funktionen über ein Subclassing, zeigt dieser Tipp.
Besonders wichtig ist es, dass der Default-Cursor vor dem Subclassing Aufruf gesichert wird und auch nach dem Verlassen wiederhergestellt wird, sonst könnte es zu sehr unerwünschten "Nebeneffekten" kommen.
Wichtiger Hinweis
Im Tipp wird Subclassing verwendet. Das Programm sollte nicht mit dem Beenden-Button der Entwicklungsumgebung (IDE) beendet werden, da dies nahezu immer zum Absturz der IDE führt.
Alle nicht gespeicherten Daten gehen damit verloren!!!
 
Option Explicit

Private Declare Function SetClassLong Lib "User32" Alias _
    "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long

Private Declare Function LoadCursorFromFile Lib "User32" Alias _
    "LoadCursorFromFileA" (ByVal lpFileName As String) As Long

Private Declare Function DestroyCursor Lib "User32" (ByVal _
    hCursor As Long) As Long

Private Declare Function GlobalLock Lib "Kernel32" (ByVal _
    hMem As Long) As Long

Private Declare Function GlobalUnlock Lib "Kernel32" (ByVal _
    hMem As Long) As Long

Const GCW_HCURSOR = -12

Dim hCursor As Long

Private Sub Form_Load()
  Combo1.AddItem "(kein Cursor)"
  Combo1.AddItem "Appstart.ani"
  Combo1.AddItem "Globe.ani"
  Combo1.AddItem "Hourglas.ani"
  Combo1.ListIndex = 0
End Sub

Private Sub Combo1_Click()
  Dim D As String

  D$ = Combo1.List(Combo1.ListIndex)
  MakeDefaultCursor
  If D$ <> "(kein Cursor)" Then hCursor = _
           LoadCursorFromFile(App.Path & "\" & D$)

  Me.MousePointer = vbCustom
  SetClassLong Me.hwnd, GCW_HCURSOR, hCursor
End Sub

Private Sub Form_Unload(Cancel As Integer)
  MakeDefaultCursor
End Sub

Public Sub MakeDefaultCursor()
  Me.MousePointer = vbDefault
  GlobalUnlock hCursor
  DestroyCursor hCursor
End Sub
 
Weitere Links zum Thema
Animierter Cursor, mal ganz anders
Maus-Cursor als Fadenkreuz

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (5,8 kB) Downloads bisher: [ 1871 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Freitag, 8. Juli 2011