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.633 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung 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 sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
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. |