VB 5/6-Tipp 0640: X- und Y-Achse der Maus invertieren
von ActiveVB
Beschreibung
Wer schon immer einmal erfahren wollte, wie z.B. in Spielen die Mausachsen verdreht werden, erfährt dies hier.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Projekt1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Timersteuerelement "tmr_mouseinvert" Option Explicit 'Benötigte API-Funktionen und Typen Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Type POINTAPI x As Long y As Long End Type Private x As Long Private y As Long Private Tx As Long, Ty As Long Private Sub Invert() Dim pT As POINTAPI 'Auslesen der Mauszeigerkoordinaten GetCursorPos pT 'Abstand zwischen momentaner Position und letzter Position bestimmen Tx = (pT.x - x) Ty = (pT.y - y) 'Sicherheitsabfrage 'Wenn der Mauszeiger am Rande des Bildschirms ist, ist die 'Koordinate eine "komische Zahl" ;-) Ausserdem würde der 'Benutzer nicht mehr vom Rand wegkommen, da Windows die Maus 'dann blockt... If Tx > 1500 Then Tx = -10 If Ty > 1500 Then Ty = -10 If Tx < -1500 Then Tx = 10 If Ty < -1500 Then Ty = 10 'Den Mauszeiger an die gewünschte Position setzen '(die neue Position minus zweimal den Abstand zwischen 'der momentanen Position und der letzten Position) SetCursorPos pT.x - 2 * Tx, pT.y - 2 * Ty 'Den (nun) momentanen Wert zwischenspeichern x = pT.x - 2 * Tx y = pT.y - 2 * Ty End Sub Private Sub Form_Load() Dim pT As POINTAPI 'Zwischenspeichern beim Laden, damit der Mauszeiger von dort startet, 'wo er momentan ist GetCursorPos pT x = pT.x y = pT.y End Sub Private Sub tmr_mouseinvert_Timer() Invert End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Projekt1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Kriechi am 04.06.2006 um 10:37
tipp funktioniert zwar win xp + sp2 mit vb6
aber:
er ruckelt ziemlich ist das normal?
mfg
Kommentar von Andreas Konz am 03.11.2004 um 10:47
Muss in dem Form_load dieses Beispieles nicht noch der Timer aktiviert werden, bzw. ein Intervall angegeben werden?
Ich habe den Code so übernommen, und das Programm lief nicht. Es lief erst, als ich den Timer ein Intervall zugewiesen habe.
Gruß Andi
Kommentar von FanatiX am 24.09.2004 um 13:18
ich glaub dieser tipp iss auch nur gut dazu um arbeitskollegen in den wahnsinn zu treiben :D
...nur son gedanke :D
Kommentar von MichaelG. am 26.02.2004 um 20:47
Damit das aber gut aussieht muss der Timer schnell und somit Resourceungünstig laufen.
In Games wird das Mauszeiger versteckt und es wird ein eigener gezeichnet. Hier kann man bei der Position des eigenen einfach die umgekehrte zur eigentlichen nehmen, dazu ist dann kein Timer erforderlich.
Nur so ein Gedanke :-)
Gruß
Michael