Nachfolgender Code zeigt, wie sich prüfen lässt, ob sich die Maus aktuell innerhalb oder außerhalb einer angegebenen Form befindet. Code für Modul: Option Explicit ' benötigte API-Deklarationen Private Declare Function GetCursorPos Lib "user32" ( _ lpPoint As POINTAPI) As Long Private Type POINTAPI x As Long y As Long End Type Private Type FORMPOS Top As Long Bottom As Long Left As Long Right As Long End Type ' Form-Position unf Größe ermitteln und in FORMPOS-Struktur "merken" Private Function GetFormPos(lpPos As FORMPOS, Form As Form) As Long With Form lpPos.Left = .Left / Screen.TwipsPerPixelX lpPos.Top = .Top / Screen.TwipsPerPixelY lpPos.Right = (.Left + .Width) / Screen.TwipsPerPixelX lpPos.Bottom = (.Top + .Height) / Screen.TwipsPerPixelY End With End Function ' Prüft, ob sich die Maus innerhalb der Form befindet Private Function GetMousePos(curPos As POINTAPI, _ frmPos As FORMPOS) As Boolean With curPos GetMousePos = .x >= frmPos.Left And .x <= frmPos.Right _ And .y >= frmPos.Top And .y <= frmPos.Bottom End With End Function ' Gibt True zurück, wenn sich der Mauszeiger innerhalb ' der angegeben Form befindet, bzw. False, falls nicht Public Function IsMouseInForm(ByVal Form As Form) As Boolean Dim Result As Long Dim P As POINTAPI Dim F As FORMPOS ' aktuelle Mausposition Result = GetCursorPos(P) ' aktuelle Form-Größe und Position Result = GetFormPos(F, Form) ' Mausposition prüfen IsMouseInForm = GetMousePos(P, F) End Function Nun können wir, als Beispiel, die Funktion in einem Timer (Timer1) alle 50 Millisekunden aufrufen und ihren Rückgabewert in einem Label (Label1) ausgeben: Private Sub Form_Load() ' Timer initialisieren und starten Timer1.Interval = 50 Timer1.Enabled = True End Sub Private Sub Timer1_Timer() ' Maus innerhalb/außerhalb der Form? If IsMouseInForm(Me) Then Label1.Caption = "STATUS:" & vbCrLf & _ "Maus befindet sich innerhalb der Form!" Else Label1.Caption = "STATUS:" & vbCrLf & _ "Maus befindet sich außerhalb der Form!" End If End Sub Dieser Tipp wurde bereits 11.201 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats TOP! Unser Nr. 1 ![]() Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |