Thread: Virtual keys

  1. #1
    Registered User
    Join Date
    Jul 2005
    Posts
    45

    Question Virtual keys

    Hi all, I need some help with the GetAsyncKeyState() function.
    I've done a virtual keyboard with an editobx where I have to add the text.
    By now I can use only the mouse, and after I press the letter it is placed in the correct field, but how can I do to use also GetAsyncKeyState()?

    E.G.:
    Code:
    void CTest::OnClickedA() {
    GetAsyncKeyState() // how can I use it??
    }

  2. #2
    Registered User
    Join Date
    Mar 2005
    Location
    Mountaintop, Pa
    Posts
    1,058
    If you're looking for an example of how to use GetAsyncKeyState:

    Code:
    #pragma comment( lib, "user32.lib" )
    #pragma comment( lib, "gdi32.lib" ) 
    
    #include <windows.h>  
    
    #define VK_A 0x41
    #define WINDOW_CLASS_NAME "VIRTUALKEYDEMO"
    
    LRESULT CALLBACK WindowProc(HWND hwnd, 
        UINT msg, 
        WPARAM wparam, 
        LPARAM lparam)
    {
        HDC     hdc;
        switch(msg)
        {   
            case WM_DESTROY: 
                {
                    PostQuitMessage(0);
                    return(0);
                } 
                break;
            default:
                break;
        } 
        return (DefWindowProc(hwnd, msg, wparam, lparam));
    } 
    
    int WINAPI WinMain( HINSTANCE hinstance,
                        HINSTANCE hprevinstance,
                        LPSTR lpcmdline,
                        int ncmdshow)
    {
    
        WNDCLASSEX winclass; 
        HWND       hwnd;     
        MSG        msg;      
        HDC        hdc;      
    
        winclass.cbSize         = sizeof(WNDCLASSEX);
        winclass.style          = CS_DBLCLKS | CS_OWNDC | 
            CS_HREDRAW | CS_VREDRAW;
        winclass.lpfnWndProc    = WindowProc;
        winclass.cbClsExtra     = 0;
        winclass.cbWndExtra     = 0;
        winclass.hInstance      = hinstance;
        winclass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
        winclass.hCursor        = LoadCursor(NULL, IDC_ARROW); 
        winclass.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
        winclass.lpszMenuName   = NULL;
        winclass.lpszClassName  = WINDOW_CLASS_NAME;
        winclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
    
        if (!RegisterClassEx(&winclass))
            return(0);
    
        if (!(hwnd = CreateWindowEx(NULL,                 
            WINDOW_CLASS_NAME,     
            "Virtual Key Demo for press and release of A key",
            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
            0,0,     
            400,100,  
            NULL,    
            NULL,    
            hinstance,
            NULL))) 
            return(0);
        while(TRUE)
        {
            if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
            { 
                if (msg.message == WM_QUIT)
                    break;
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
            hdc = GetDC(hwnd);
            if(GetAsyncKeyState(VK_A) & 0x8000)
                TextOut(hdc, 0,16, "A key: 0", 8);
            else
                TextOut(hdc, 0,16, "A key: 1", 8);
            ReleaseDC(hwnd, hdc);
        }
        return(msg.wParam);
    }

  3. #3
    Registered User Queatrix's Avatar
    Join Date
    Apr 2005
    Posts
    1,342
    Also, here is a list of key codes:

    Code:
    VK_LBUTTON (01)
    Left mouse button
    
    VK_RBUTTON (02)
    Right mouse button
    
    VK_CANCEL (03)
    Control-break processing
    
    VK_MBUTTON (04)
    Middle mouse button (three-button mouse)
    
    VK_XBUTTON1 (05)
    Windows 2000/XP: X1 mouse button
    
    VK_XBUTTON2 (06)
    Windows 2000/XP: X2 mouse button
    
    - (07)
    Undefined
    
    VK_BACK (08)
    BACKSPACE key
    
    VK_TAB (09)
    TAB key
    
    - (0A-0B)
    Reserved
    
    VK_CLEAR (0C)
    CLEAR key
    
    VK_RETURN (0D)
    ENTER key
    
    - (0E-0F)
    Undefined
    
    VK_SHIFT (10)
    SHIFT key
    
    VK_CONTROL (11)
    CTRL key
    
    VK_MENU (12)
    ALT key
    
    VK_PAUSE (13)
    PAUSE key
    
    VK_CAPITAL (14)
    CAPS LOCK key
    
    VK_KANA (15)
    Input Method Editor (IME) Kana mode
    
    VK_HANGUEL (15)
    IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
    
    VK_HANGUL (15)
    IME Hangul mode
    
    - (16)
    Undefined
    
    VK_JUNJA (17)
    IME Junja mode
    
    VK_FINAL (18)
    IME final mode
    
    VK_HANJA (19)
    IME Hanja mode
    
    VK_KANJI (19)
    IME Kanji mode
    
    - (1A)
    Undefined
    
    VK_ESCAPE (1B)
    ESC key
    
    VK_CONVERT (1C)
    IME convert
    
    VK_NONCONVERT (1D)
    IME nonconvert
    
    VK_ACCEPT (1E)
    IME accept
    
    VK_MODECHANGE (1F)
    IME mode change request
    
    VK_SPACE (20)
    SPACEBAR
    
    VK_PRIOR (21)
    PAGE UP key
    
    VK_NEXT (22)
    PAGE DOWN key
    
    VK_END (23)
    END key
    
    VK_HOME (24)
    HOME key
    
    VK_LEFT (25)
    LEFT ARROW key
    
    VK_UP (26)
    UP ARROW key
    
    VK_RIGHT (27)
    RIGHT ARROW key
    
    VK_DOWN (28)
    DOWN ARROW key
    
    VK_SELECT (29)
    SELECT key
    
    VK_PRINT (2A)
    PRINT key
    
    VK_EXECUTE (2B)
    EXECUTE key
    
    VK_SNAPSHOT (2C)
    PRINT SCREEN key
    
    VK_INSERT (2D)
    INS key
    
    VK_DELETE (2E)
    DEL key
    
    VK_HELP (2F)
    HELP key
    
     (30)
    0 key
    
     (31)
    1 key
    
     (32)
    2 key
    
     (33)
    3 key
    
     (34)
    4 key
    
     (35)
    5 key
    
     (36)
    6 key
    
     (37)
    7 key
    
     (38)
    8 key
    
     (39)
    9 key
    
    - (3A-40)
    Undefined
    
     (41)
    A key
    
     (42)
    B key
    
     (43)
    C key
    
     (44)
    D key
    
     (45)
    E key
    
     (46)
    F key
    
     (47)
    G key
    
     (48)
    H key
    
     (49)
    I key
    
     (4A)
    J key
    
     (4B)
    K key
    
     (4C)
    L key
    
     (4D)
    M key
    
     (4E)
    N key
    
     (4F)
    O key
    
     (50)
    P key
    
     (51)
    Q key
    
     (52)
    R key
    
     (53)
    S key
    
     (54)
    T key
    
     (55)
    U key
    
     (56)
    V key
    
     (57)
    W key
    
     (58)
    X key
    
     (59)
    Y key
    
     (5A)
    Z key
    
    VK_LWIN (5B)
    Left Windows key (Microsoft Natural keyboard) 
    
    VK_RWIN (5C)
    Right Windows key (Natural keyboard)
    
    VK_APPS (5D)
    Applications key (Natural keyboard)
    
    - (5E)
    Reserved
    
    VK_SLEEP (5F)
    Computer Sleep key
    
    VK_NUMPAD0 (60)
    Numeric keypad 0 key
    
    VK_NUMPAD1 (61)
    Numeric keypad 1 key
    
    VK_NUMPAD2 (62)
    Numeric keypad 2 key
    
    VK_NUMPAD3 (63)
    Numeric keypad 3 key
    
    VK_NUMPAD4 (64)
    Numeric keypad 4 key
    
    VK_NUMPAD5 (65)
    Numeric keypad 5 key
    
    VK_NUMPAD6 (66)
    Numeric keypad 6 key
    
    VK_NUMPAD7 (67)
    Numeric keypad 7 key
    
    VK_NUMPAD8 (68)
    Numeric keypad 8 key
    
    VK_NUMPAD9 (69)
    Numeric keypad 9 key
    
    VK_MULTIPLY (6A)
    Multiply key
    55
    VK_ADD (6B)
    Add key
    
    VK_SEPARATOR (6C)
    Separator key
    
    VK_SUBTRACT (6D)
    Subtract key
    
    VK_DECIMAL (6E)
    Decimal key
    
    VK_DIVIDE (6F)
    Divide key
    
    VK_F1 (70)
    F1 key
    
    VK_F2 (71)
    F2 key
    
    VK_F3 (72)
    F3 key
    
    VK_F4 (73)
    F4 key
    
    VK_F5 (74)
    F5 key
    
    VK_F6 (75)
    F6 key
    
    VK_F7 (76)
    F7 key
    
    VK_F8 (77)
    F8 key
    
    VK_F9 (78)
    F9 key
    
    VK_F10 (79)
    F10 key
    
    VK_F11 (7A)
    F11 key
    
    VK_F12 (7B)
    F12 key
    
    VK_F13 (7C)
    F13 key
    
    VK_F14 (7D)
    F14 key
    
    VK_F15 (7E)
    F15 key
    
    VK_F16 (7F)
    F16 key
    
    VK_F17 (80H)
    F17 key
    
    VK_F18 (81H)
    F18 key
    
    VK_F19 (82H)
    F19 key
    
    VK_F20 (83H)
    F20 key
    
    VK_F21 (84H)
    F21 key
    
    VK_F22 (85H)
    F22 key
    
    VK_F23 (86H)
    F23 key
    
    VK_F24 (87H)
    F24 key
    
    - (88-8F)
    Unassigned
    
    VK_NUMLOCK (90)
    NUM LOCK key
    
    VK_SCROLL (91)
    SCROLL LOCK key
    
     (92-96)
    OEM specific
    
    - (97-9F)
    Unassigned
    
    VK_LSHIFT (A0)
    Left SHIFT key
    
    VK_RSHIFT (A1)
    Right SHIFT key
    
    VK_LCONTROL (A2)
    Left CONTROL key
    
    VK_RCONTROL (A3)
    Right CONTROL key
    
    VK_LMENU (A4)
    Left MENU key
    
    VK_RMENU (A5)
    Right MENU key
    
    VK_BROWSER_BACK (A6)
    Windows 2000/XP: Browser Back key
    
    VK_BROWSER_FORWARD (A7)
    Windows 2000/XP: Browser Forward key
    
    VK_BROWSER_REFRESH (A8)
    Windows 2000/XP: Browser Refresh key
    
    VK_BROWSER_STOP (A9)
    Windows 2000/XP: Browser Stop key
    
    VK_BROWSER_SEARCH (AA)
    Windows 2000/XP: Browser Search key 
    
    VK_BROWSER_FAVORITES (AB)
    Windows 2000/XP: Browser Favorites key
    
    VK_BROWSER_HOME (AC)
    Windows 2000/XP: Browser Start and Home key
    
    VK_VOLUME_MUTE (AD)
    Windows 2000/XP: Volume Mute key
    
    VK_VOLUME_DOWN (AE)
    Windows 2000/XP: Volume Down key
    
    VK_VOLUME_UP (AF)
    Windows 2000/XP: Volume Up key
    
    VK_MEDIA_NEXT_TRACK (B0)
    Windows 2000/XP: Next Track key
    
    VK_MEDIA_PREV_TRACK (B1)
    Windows 2000/XP: Previous Track key
    
    VK_MEDIA_STOP (B2)
    Windows 2000/XP: Stop Media key
    
    VK_MEDIA_PLAY_PAUSE (B3)
    Windows 2000/XP: Play/Pause Media key
    
    VK_LAUNCH_MAIL (B4)
    Windows 2000/XP: Start Mail key
    
    VK_LAUNCH_MEDIA_SELECT (B5)
    Windows 2000/XP: Select Media key
    
    VK_LAUNCH_APP1 (B6)
    Windows 2000/XP: Start Application 1 key
    
    VK_LAUNCH_APP2 (B7)
    Windows 2000/XP: Start Application 2 key
    
    - (B8-B9)
    Reserved
    
    VK_OEM_1 (BA)
    Used for miscellaneous characters; it can vary by keyboard.
    Windows 2000/XP: For the US standard keyboard, the ';:' key 
    
    
    VK_OEM_PLUS (BB)
    Windows 2000/XP: For any country/region, the '+' key
    
    VK_OEM_COMMA (BC)
    Windows 2000/XP: For any country/region, the ',' key
    
    VK_OEM_MINUS (BD)
    Windows 2000/XP: For any country/region, the '-' key
    
    VK_OEM_PERIOD (BE)
    Windows 2000/XP: For any country/region, the '.' key
    
    VK_OEM_2 (BF)
    Used for miscellaneous characters; it can vary by keyboard.
    Windows 2000/XP: For the US standard keyboard, the '/?' key 
    
    
    VK_OEM_3 (C0)
    Used for miscellaneous characters; it can vary by keyboard. 
    Windows 2000/XP: For the US standard keyboard, the '`~' key 
    
    
    - (C1-D7)
    Reserved
    
    - (D8-DA)
    Unassigned
    
    VK_OEM_4 (DB)
    Used for miscellaneous characters; it can vary by keyboard. 
    Windows 2000/XP: For the US standard keyboard, the '[{' key
    
    
    VK_OEM_5 (DC)
    Used for miscellaneous characters; it can vary by keyboard. 
    Windows 2000/XP: For the US standard keyboard, the '\|' key
    
    
    VK_OEM_6 (DD)
    Used for miscellaneous characters; it can vary by keyboard. 
    Windows 2000/XP: For the US standard keyboard, the ']}' key
    
    
    VK_OEM_7 (DE)
    Used for miscellaneous characters; it can vary by keyboard. 
    Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key
    
    
    VK_OEM_8 (DF)
    Used for miscellaneous characters; it can vary by keyboard.
    
    - (E0)
    Reserved
    
     (E1)
    OEM specific
    
    VK_OEM_102 (E2)
    Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
    
     (E3-E4)
    OEM specific
    
    VK_PROCESSKEY (E5)
    Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
    
     (E6)
    OEM specific
    
    VK_PACKET (E7)
    Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
    
    - (E8)
    Unassigned
    
     (E9-F5)
    OEM specific
    
    VK_ATTN (F6)
    Attn key
    
    VK_CRSEL (F7)
    CrSel key
    
    VK_EXSEL (F8)
    ExSel key
    
    VK_EREOF (F9)
    Erase EOF key
    
    VK_PLAY (FA)
    Play key
    
    VK_ZOOM (FB)
    Zoom key
    
    VK_NONAME (FC)
    Reserved 
    
    VK_PA1 (FD)
    PA1 key
    
    VK_OEM_CLEAR (FE)
    Clear key

  4. #4
    Registered User
    Join Date
    Jul 2005
    Posts
    45
    Thank you to all

  5. #5
    Registered User
    Join Date
    Jul 2005
    Posts
    45
    By now my application can read only the letters pressed on the Virtual Keyboard, now I can use GetAsyncKeyState() to see if a button on the real keyboard is pressed but is there a function I can use that put the pressed letter, processed with GetAsyncKeyState(), in the editbox called IDC_EXAMPLE??

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 48
    Last Post: 09-26-2008, 03:45 AM
  2. Resetting virtual keys
    By WalkerBurgin in forum Windows Programming
    Replies: 2
    Last Post: 08-18-2004, 10:31 PM
  3. Virtual Keys :: MFC
    By kuphryn in forum C++ Programming
    Replies: 1
    Last Post: 03-17-2002, 03:39 PM
  4. C++ XML Class
    By edwardtisdale in forum C++ Programming
    Replies: 0
    Last Post: 12-10-2001, 11:14 PM
  5. Exporting Object Hierarchies from a DLL
    By andy668 in forum C++ Programming
    Replies: 0
    Last Post: 10-20-2001, 01:26 PM