Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Apr 20, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Determine how a control got the focus

At times it might be convenient to know how a given control got the focus, namely by means of the Tab key, an associated hotkey or a click of the mouse. You can learn this information through the GetKeyState API function, that returns the current state of a key. Here is a simple function that is meant to be called from within the GotFocus event of a control

Private Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal _
    nVirtKey As Long) As Integer

Function GotFocusMethod() As Integer
    If GetKeyState(vbKeyTab) < 0 Then
        If (GetKeyState(vbKeyShift) < 0) Then
            ' Shift-Tab key is pressed
            GotFocusMethod = 4
            ' Tab key is pressed
            GotFocusMethod = 1
        End If
    ElseIf GetKeyState(vbKeyMenu) < 0 Then
        ' Alt key is pressed (hotkey activation)
        GotFocusMethod = 2
    ElseIf GetKeyState(vbLeftButton) < 0 Then
        ' mouse left button is pressed
        GotFocusMethod = 3
    End If
End Function
This function returns 1 if the control got the focus by mean of the Tab key, 2 if a hotkey was pressed, 3 if the mouse was clicked, 4 if Shift-Tab was pressed, 0 if it cannot determine the method used (probably programmatically through a SetFocus method).

Thanks to Scott B. Kardos for adding the code that tests the Shift-Tab key.

Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date