Rubrik: Maus & Tastatur · Maus | VB-Versionen: VB4, VB5, VB6 | 29.04.01 |
Hottracking in VB Realisierung der in VB fehlenden Ereignisse MouseIn und MouseOut. | ||
Autor: LonelySuicide666 | Bewertung: | Views: 21.713 |
www.vbapihelpline.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Dieser Tipp zeigt, wie die Ereignisse MouseIn und MouseOut, welche ja in Visual-Basic nicht zur Verfügung stehen, mit Hilfe der Windows-API realisiert werden können. Als Beispiel zeigen wir Ihnen die Funktionen in Verbindung mit einem Command-Button. Wird die Maus auf die Schaltfläche bewegt, wird der Text fett dargestellt. Beim Verlassen der Schaltfläche mit der Maus wird der Text dann wieder normal angezeigt.
' zunächst die benötigten API-Deklarationen Private Declare Function SetCapture Lib "user32.dll" ( _ ByVal hwnd As Long) As Long Private Declare Function GetCapture Lib "user32.dll" () As Long Private Declare Function ReleaseCapture Lib "user32.dll" () As Long Private Declare Function SetFocusWnd Lib "user32.dll" _ Alias "SetFocus" ( _ ByVal hwnd As Long) As Long
Plazieren Sie für das Beispiel einfach ein paar Command-Buttons mit gleichen Namen, aber unterschiedlichen Indexes auf die Form. Im MouseMove-Ereignis der Schaltflächen muss dann nachfolgender Code eingefügt werden.
Private Sub Command1_MouseMove(Index As Integer, _ Button As Integer, Shift As Integer, X As Single, _ Y As Single) With Command1(Index) ' Befindet sich die Maus über dem Commandbutton? If X >= 0 And Y >= 0 And X <= .Width And Y <= .Height Then SetCapture .hwnd .FontBold = True Else ' wenn nicht, Capture lösen ReleaseCapture .FontBold = False End If ' Beispiel für GetCapture SetFocusWnd GetCapture End With End Sub
Die letzte Anweisung SetFocusWnd bewirkt, daß die Schaltfläche zusätzlich den Fokus erhält, sobald der Mauszeiger sich darüber befindet.