Hallo an alle,
Ich hab mal wieder ein Problem. Ich wollte mir ein Kontextmenü basteln.
Das mache ich Über eine Userform ein paar Label drauf und fertig. Die Einzelnen Aktionen des Kontextmenüs werden über Label_Click ausgelöst.
Damit das ganze auch schön aussieht wollte ich die Hintergrundfarbe von dem Label ändern wenn sich der Mauscursor drauf befindet. Zuerst wollte ich das mit
Private Sub Label2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If X >= 0 And X <= Label2.Width - 0 And Y >= 0 And Y <= Label2.Height - 0 Then
Label2.SpecialEffect = fmSpecialEffectRaised
'Else
'Frame1.SpecialEffect = fmSpecialEffectFlat
End If
Ich habe aber ein Problem das Label wieder zurück zu färben, wenn sich die Maus nicht mehr darauf befindet.
Dann wollte ich das Problem ganz anders angehen und über die Mausposition lösen.
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Lib "user32.dll" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim CP As POINTAPI
Private Sub Timer1_Timer ()
GetCursorPos CP
Label1.Caption = "X: " & CP.x & " / Y: " & CP.y
End Sub
Wenn ich die Position des Cursors kenne könnte man sie ja mit der Position des Labels vergleichen.
Userform1.Left+Label1.Left
Nur das ganze funktioniert nicht ganz richtig. Wenn das Label und die Maus laut Koordinaten die gleiche Position haben sollten bin ich ein ganzes Stück links von dem Label. Je weiter sich die Userform rechts befindet desto größer wird der Abstand.
Jetzt zu meiner Frage:
Kann es sein das die Mausposition in einer anderen Einheit gemessen wird als die Position der Userform und Label
------------------
Hinweise auf Rechtschreibfehler kann man sich bitte sparen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP