Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
620to624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
620to624
620to624
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Harte Nuss (API)

Harte Nuss (API)
08.06.2005 18:45:15
Camel
Hi,
ich versuche mein Form etwas aufzupeppen und möchte einen aninimierten
Cursor eine bestimmte Zeit anzeigen, also solnage Excel das Sheet mit
4000 Rows füllt oder so...
Ich habe mich schon daran versucht aber leider funktioniert es nicht hat jemand
eine Tipp, hier mein Code (reichlich verworren):
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

Private Declare Function SetCursor Lib "user32.dll" (ByVal hCursor As Long) As Long
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Const GCW_HCURSOR = -12
Dim hCursor As Long
Private hwnd As Long
Dim OldCaption As String

Private Sub CommandButton1_Click()
Unload Me
End Sub


Private Sub Label1_Click()
End Sub


Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim FileName As String
FileName = ComboBox1.List(ComboBox1.ListIndex)
If FileName <> "(kein Cursor)" Then
hCursor = _
LoadCursorFromFile("C:\WINNT\Cursors" & "\" & FileName)
Call SetCursor(hCursor)
'Sleep 9000
End If
Label1.Caption = "C:\WINNT\Cursors" & "\" & FileName & "    " & X
OldCaption = Me.Caption
End Sub


Private Sub UserForm_Activate()
Me.Caption = mod_Main.GLOBAL_UserFormCaption
hwnd = FindWindow(vbNullString, mod_Main.GLOBAL_UserFormCaption)
Me.Caption = OldCaption
ComboBox1.AddItem "(No Cursor)"
ComboBox1.AddItem "appstart.ani"
ComboBox1.AddItem "globe.ani"
ComboBox1.AddItem "hourglas.ani"
ComboBox1.AddItem "piano.ani"
ComboBox1.AddItem "stopwtch.ani"
ComboBox1.AddItem "metronom.ani"
ComboBox1.AddItem "dinosaur.ani"
ComboBox1.AddItem "banana.ani"
ComboBox1.AddItem "coin.ani"
ComboBox1.AddItem "barber.ani"
ComboBox1.AddItem "hand.ani"
ComboBox1.AddItem "drum.ani"
ComboBox1.ListIndex = 0
End Sub


Private Sub ComboBox1_Change()
Dim Cursor As String
Cursor = ComboBox1.List(ComboBox1.ListIndex)
If Not CBool(InStr(Cursor, "(No Cursor)")) Then
hCursor = _
LoadCursorFromFile("C:\WINNT\Cursors" & "\" & Cursor)
Call SetCursor(hCursor)
'Sleep 9000
End If
Label1.Caption = "C:\WINNT\Cursors" & "\" & Cursor
OldCaption = Me.Caption
End Sub


Private Sub UserForm_QueryUnload(ByVal Cancel As Integer)
MakeDefaultCursor
End Sub

Public Sub MakeDefaultCursor()
Me.MousePointer = fmMousePointerCustom
'GlobalUnlock hCursor
'DestroyCursor hCursor
End Sub
Gruss
Camel

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Harte Nuss (API)
08.06.2005 20:30:11
Matthias
Hallo Camel,
wäre es nicht reizvoller, den Code so weit zu optimieren, das der Schnickschnack nicht nötig ist, weil die Makro-Ausführung viel schneller geht?
Gruß Matthias
AW: Harte Nuss (API)
08.06.2005 23:22:58
Camel
Hi,
ja, irgendeinen Vorschlag, da soweit mir bekannt das ohne API nicht funktioniert.
Denn der Cursor müsste gesetzt und angezeigt, ...., dann wieder entfernt werden.
Gruss
Camel
AW: Harte Nuss (API)
08.06.2005 23:44:17
Matthias
Hallo Camel,
du hast mich missverstanden.
Ich meinte, vielleicht kannst du ("VBA nein") deinen Code, der so lange dauert, dass du dir ein Unterhaltungsprogramm dazu schreiben willst, so weit optimieren, dass eben dieses "Unterhaltungsprogramm" gar nicht mehr nötig ist.
;-)
Gruß Matthias
Anzeige
AW: Harte Nuss (API)
10.06.2005 17:39:35
Camel
Hi,
ich glaube ich habe dich jetzt verstanden!
Mein Code dauert nicht so lange und es ist kein Unterhaltungsprogramm!
Aääh wieso der Hinweis ("VBA nein")?
Gruss
Camel
AW: Harte Nuss (API)
09.06.2005 21:52:29
Nepumuk
Hi,
ich seh da kein Problem.
Option Explicit

Private Declare Function CopyIcon Lib "user32" ( _
    ByVal hIcon As Long) As Long
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 SetSystemCursor Lib "user32" ( _
    ByVal hcur As Long, _
    ByVal id As Long) As Long
Private Declare Function GetCursor Lib "user32" () As Long

Private Const OCR_NORMAL = 32512

Private lngOldCursor As Long

Private Sub UserForm_Activate()
    lngOldCursor = CopyIcon(GetCursor())
    Call SetSystemCursor(LoadCursorFromFile("C:\WINNT\Cursors\banana.ani"), OCR_NORMAL)
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Call SetSystemCursor(lngOldCursor, OCR_NORMAL)
End Sub

Gruß
Nepumuk
Anzeige
AW: Harte Nuss (API)
10.06.2005 13:57:11
Camel
Hai,
Danke,..,Danke ich wusste doch das es geht, nur hatte ich SetSystemCursor aus den Gedächniss
gestrichen und bin nicht 'drauf gekommen. Manchmanl sieht man den Wald vor lauter Bäumen
nicht, wie sollte die Form auch sonst den Cursor behalten.
Gruss
Camel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige