Maus verfolgen

Mister master

Erfahrenes Mitglied
Liebe VB-Programmierer!

Die SuFu hat nichts ergeben, darum frag ich jetzt mal:

Ich hätte gerne etwas, dass meine Maus verfolgt, wenn sie gedrückt ist, allerdings mit Zeitverzögerung, also "Nachlaufen". Aber es sollte immer den neuesten Wert berechnen, also wenn ich ne kurve fahre mit der Maus, dann soll die Figur immer den direktesten Weg nehmen.

Wem dies unverständlich ist, der denke an Spiele-Klassiker wie Diablo und Diablo2. So etwa will ich es haben...
 
Diesen Code in ein Modul:
Code:
Public Declare Function GetCursorPos Lib "user32" (lpPoint As _
       POINTAPI) As Long

Public Type POINTAPI
  x As Long
  y As Long
End Type

2 Labels und 1 Timer auf die Form legen. Interval auf "1" und "Enabled" stellen.

Diesen Code in die Form packen:
Code:
Option Explicit

Dim mausPosition As POINTAPI

Private Sub Timer1_Timer()
  GetCursorPos MousePosition
  Label1.Caption = mausPosition.x
  Label2.Caption = mausPosition.y
End Sub

Das sollte Dir weiterhelfen.
 
Wenn ich aber starten will, sagt er

Fehler beim Kompilieren:

Ein als Public deklarierter, benutzerdefinierter Typ kann in einem privaten Objektmodul nicht definiert werden.




was soll ich da tun? Ich habe VB 6.0 Enterprise Edition, falls das was zur Sache tut.
 
Hm, also bei mir erscheint keine Fehlermeldung. Allerdings habe ich gerade gesehen, dass mir ein kleiner Fehler oben unterlaufen ist.
Korrektur:
Code:
Option Explicit

Dim mausPosition As POINTAPI

Private Sub Timer1_Timer()
  GetCursorPos mausPosition
  Label1.Caption = mausPosition.x
  Label2.Caption = mausPosition.y
End Sub

Hast Du beachtet, dass DIESER Code in einem Modul eingegeben werden muss?
(Menüleiste, Projekt - Modul hinzufügen)
Code:
Public Declare Function GetCursorPos Lib "user32" (lpPoint As _
       POINTAPI) As Long

Public Type POINTAPI
  x As Long
  y As Long
End Type
 
Zuletzt bearbeitet:
Er markiert mir die zeile mit

Visual Basic:
dim mausposition as POINTAPI

und sagt: "benutzerdefinierter Typ nicht definiert"
 
Wie ich oben schon schrieb, dieser Code:
Code:
Public Declare Function GetCursorPos Lib "user32" (lpPoint As _
       POINTAPI) As Long

Public Type POINTAPI
  x As Long
  y As Long
End Type

...muß in ein Modul geschrieben werden!
Oder Du lässt es so und schreibst statt "Public" das Wort "Private"
 
Jetzt geht es! Vielen Dank!

Und nun zu meinem zweiten Problem: wie gestallte ich den Code, dass ein Image, sagen wir "Image1" jetzt immer meiner Maus folgt?
 
Das ist unabhängig von dem vorigen Code.

Code:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image1.Left = X
Image1.Top = Y
End Sub
 
Zurück