Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

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