Rubrik: Maus & Tastatur · Maus | VB-Versionen: VB4, VB5, VB6 | 05.07.01 |
Eigenartiges MouseMove-Ereignis Das MouseMove-Ereignis tritt eigenartigerweise ein, obwohl die Maus gar nicht bewegt wurde. | ||
Autor: Dieter Otter | Bewertung: | Views: 27.885 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Beim Programmieren eines Bildschirmschoners ist vielleicht der ein oder andere schon einmal auf das doch etwas eigenartige Verhalten des MouseMove-Ereignisses gestossen. So wird beim Laden einer Form das MouseMove-Ereignis ausgelöst, auch wenn die Maus gar nicht bewegt wurde.
Der nachfolgende Tipp sorgt für Abhilfe...
Private Sub Form_MouseMove(Button As Integer, _ Shift As Integer, X As Single, Y As Single) Static Init As Boolean Static LastX As Single Static LastY As Single If Not Init Then LastX = X: LastY = Y Init = True Else If X <> LastX Or Y <> LastY Then End End If End Sub
Und so funktionierts:
Das Programm (der Bildschirmschoner) soll beendet werden, sobald die Maus bewegt wird. Innerhalb der MouseMove-Prozedur wird eine Variable Init als "Static" deklariert. "Static" bedeutet, daß der Wert der Variable beim Verlassen der Prozedur erhalten bleibt. Tritt das MouseMove-Ereignis ein, so wird geprüft, ob Init den Wert "False" hat. Ist dies der Fall (und zwar beim Laden der Form) wird Init auf "True" gesetzt und die aktuelle Mausposition in den Variablen LastX und LastY gespeichert (ebenfalls als "Static" deklariert). Wird das MouseMove-Ereignis erneut ausgelöst - und dies ist nur der Fall, wenn die Maus tatsächlich bewegt wurde - so kann das Programm beendet werden.