Referenz - GETMOUSE
Syntax: GETMOUSE x, y[, [Rad][, [Buttons][, [Clip]]]]
Typ: Funktion
Kategorie: Benutzereingabe
GETMOUSE liefert die Position der Maus und den Status der Buttons, des Mausrads und des Clipping-Status zurück.
- Die Position wird in den Variablen 'x' und 'y' zurückgegeben; beide müssen vom Typ INTEGER sein. Die Koordinaten richten sich nach dem Anzeigemodus: In Grafikmodi geben sie die Position in Pixeln an. In Textmodi wird die Position des Cursors in Zeilen und Spalten ausgegeben. In beiden Fällen entspricht die linke obere Ecke den Koordinaten 0, 0. Änderungen am Koordinatensystem durch VIEW und WINDOW haben keinen Einfluss auf die von GETMOUSE zurückgelieferten Koordinaten.
- 'Rad' gibt den Status des Mausrads zurück: Wenn Sie das Mausrad von sich wegdrehen, wird diese Variable jeweils um den Wert 1 erhöht. Drehen Sie es auf sich zu, wird 'Rad' um 1 vermindert. 'Rad' startet bei jeder Programmausführung mit 0. Möglicherweise unterstützt FreeBASIC nicht immer Mausräder; in diesem Fall wird immer 0 zurückgegeben.
- 'Buttons' gibt an, welche Maustasten gerade gedrückt sind:
Bit 0 wird gesetzt, wenn die LINKE Maustaste gedrückt wird.
Bit 1 wird gesetzt, wenn die RECHTE Maustaste gedrückt wird.
Bit 2 wird gesetzt, wenn die MITTLERE Maustaste gedrückt wird.
Bit 3 wird gesetzt, wenn die 1. Zusatztaste gedrückt wird.
Bit 4 wird gesetzt, wenn die 2. Zusatztaste gedrückt wird.
Siehe dazu BIT. - 'Clip' speichert den Maus-Clipping-Status. Bei 1 ist die Maus auf das Grafik-Fenster beschränkt; bei 0 ist die Maus nicht beschränkt.
- Wenn sich die Maus außerhalb des Fensters befindet oder keine Maus angeschlossen ist, werden im Grafikmodus alle übergeben Variablen auf -1 gesetzt. Im Konsolenmodus werden die letzten Koordinaten vor dem Verlassen des Fensters zurückgegeben
- Der Rückgabewert der Funktion ist 0 bei Erfolg oder 1 beim Auftreten eines Fehlers (z. B. weil sich die Maus außerhalb des Fensters befindet).
Da beim Bewegen der Maus aus dem Grafikfenster heraus alle Werte auf -1 gesetzt werden und dies im Zusammenhang mit der Button- und Mausrad-Abfrage zu Fehlinterpretationen führen kann, sollte immer der Rückgabewert der Funktion geprüft werden.
Beispiel:
Dim As Integer x, y, buttons, Ergebnis
' Grafikfenster 320x200x8 setzen
Screenres 320, 200
Do
' Lade Mauskoordinaten ohne Mausrad:
Ergebnis = GetMouse (x, y, , buttons)
' Mauskoordinaten ermittelt. Informationen ausgeben:
Locate 1, 1
If Ergebnis <> 0 Then
Print "Maus nicht vorhanden/nicht im Fenster"
Else
Print Using "Maus-Position: ###:### Buttons: "; x; y;
' Es koennen mehrere Maustasten gleichzeitig gedrueckt sein.
' Der Status aller Maustasten liegt zusammengefasst als Bitmaske
' in der Variable "buttons" vor. Im Folgenden werden die Status
' der einzelnen Tasten durch AND-Verknuepfung mit einstelligen
' Bitmasken isoliert:
If buttons And 1 Then Print "L";
If buttons And 2 Then Print "R";
If buttons And 4 Then Print "M";
If buttons And 8 Then Print "X1";
If buttons And 16 Then Print "X2";
Print Space(5)
End If
Sleep 1 'gegen hohe CPU-Auslastung
Loop While Inkey = ""
End
Unterschiede zu QB: neu in FreeBASIC
Plattformbedingte Unterschiede:
- Unter Win32 kann im Vollbild-Konsolenmodus nicht garantiert werden, dass die Änderungen des Mausrads korrekt erkannt werden.
- Unter DOS hat das Maus-Clipping keine Auswirkung. Außerdem wird das Mausrad und die mittlere Maustaste nicht von jedem Maustreiber unterstützt.
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht GETMOUSE nicht zur Verfügung und kann nur über __GETMOUSE aufgerufen werden.
Unterschiede zu früheren Versionen von FreeBASIC:
- Maus-Clipping wird seit FreeBASIC v0.18 unterstützt.
- Seit FreeBASIC 0.14 wird GETMOUSE im Konsolenfenster unterstützt.
Siehe auch:
SCREENRES, SETMOUSE, Benutzereingaben
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|