|
Schreiben Sie vielleicht gerade einen Bildschirmschoner? Dann
werden Sie den Mauszeiger verstecken müssen, solange Ihr
Bildschirmschoner aktiv ist. Und es gibt sicher auch noch einige
andere Anlässe, den Mauszeiger unsichtbar und anschließend wieder
sichtbar zu machen.
An sich wären einfache Aufrufe der API-Funktion ShowCursor
naheliegend, um dies zu erreichen. Übergeben Sie ihr als Parameter
der Wert 0, wird der Mauszeiger (in der API-Sprache
"Cursor" genannt) verborgen. Übergeben Sie einen
beliebigen Wert ungleich 0, wird er wieder sichtbar gemacht. So ganz
stimmt dies allerdings nicht. Denn hinter der Funktion ShowCursor
steckt ein Zähler, der im ersteren Fall herunter gezählt wird, im
zweiten Fall herauf gezählt wird. Ist der Zähler größer oder
gleich 0, ist der Mauszeiger sichtbar, ist der Zähler kleiner als
0, ist er unsichtbar. Den jeweiligen Wert des Zählers erhalten Sie
als Rückgabewert der Funktion.
Dabei kann es leicht passieren, dass Sie versehentlich mit dieser
Zählerei bei mehrfachen Aufrufen der Funktion mit gleicher
Zählrichtung durcheinanderkommen und der Mauszeiger unter
Umständen einfach nicht wieder erscheinen, oder einfach nicht
unsichtbar werden will. Bei den beiden folgenden Funktionen
HideCursor und ShowCursor können Sie über den optionalen Parameter
Forced angeben, ob die API-Funktion so lange ausgeführt werden
soll, bis der Mauszeiger entweder verschwunden oder wieder
aufgetaucht ist. Um den Namenskonflikt zwischen der eigentlichen
API-Funktion ShowCursor und unserer Hilfsfunktion ShowCursor
aufzulösen, haben wir die API-Funktion in der Deklaration mittels
der Alias-Anweisung in ShwoCursorAPI umbenannt.
Private Declare Function ShowCursorAPI Lib "user32" _
Alias "ShowCursor" (ByVal bShow As Long) As Long
Public Function HideCursor(Optional ByVal Forced As Boolean = True) _
As Long
If Forced Then
Do Until ShowCursorAPI(0) < 0
Loop
Else
HideCursor = ShowCursorAPI (0)
End If
End Function
Public Function ShowCursor(Optional ByVal Forced As Boolean = True) _
As Long
If Forced Then
Do Until ShowCursorAPI(True) >= 0
Loop
Else
ShowCursor = ShowCursorAPI (True)
End If
End Function
Da bei der mit der Angabe von Forced erzwungenen Anzeige der Wert
des Zählers relativ uninteressant ist, geben die beiden Funktionen
nur beim einfachen Aufruf als Funktionsergebnis zurück. Wenn Sie
der Wert des Zählers interessiert, ohne dass Sie die Anzeige des
Mauszeigers ändern möchten, können Sie ihn über die folgende
Funktion CursorShowCount in Erfahrung bringen. Diese macht
eigentlich nichts weiter, als den Wert einmal herauf und wieder
einmal herunterzuzählen und den Stand zurückzugeben.
Public Function CursorShowCount() As Long
Dim nShow As Long
nShow = ShowCursorAPI(True)
CursorShowCount = ShowCursorAPI(0)
End Function
Analog dazu gibt Ihnen die folgende Variante den Anzeigestatus
des Mauszeigers als einfachen Wahr/Falsch-Wert zurück:
Public Function CursorShowState() As Boolean
Dim nShow As Long
nShow = ShowCursorAPI(True) - 1
CursorShowState = CBool(nShow >= 0)
ShowCursorAPI 0
End Function
Da sich die Anzeige und das Verbergen des Mauszeigers nur auf die
aktuelle Anwendung auswirken, ist es nicht weiter tragisch, wenn
Ihre kompilierte Anwendung versehentlich beendet werden sollte, ohne
dass zuletzt wieder auf Anzeigen geschaltet worden wäre. Bei
Testläufen in der Visual Basic-Entwicklungsumgebung sollten Sie
jedoch für eine abschließende Anzeige sorgen (am besten im
Form_Unload-Ereignis des zuletzt geschlossenen Forms) - der
Mauszeiger bliebe anderenfalls in der gesamten Entwicklungsumgebung
unsichtbar.
|