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.648 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. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |