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 10.624 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (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 April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
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. |