C Board  

Go Back   C Board > Platform Specific Boards > Windows Programming

Reply
 
LinkBack Thread Tools Display Modes
Old 12-07-2005, 10:39 AM   #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??
}
Arkanos is offline   Reply With Quote
Old 12-10-2005, 07:44 PM   #2
Registered User
 
Join Date: Mar 2005
Location: Mountaintop, Pa
Posts: 1,054
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);
}
BobS0327 is offline   Reply With Quote
Old 12-10-2005, 10:02 PM   #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
Queatrix is offline   Reply With Quote
Old 12-11-2005, 02:34 AM   #4
Registered User
 
Join Date: Jul 2005
Posts: 45
Thank you to all
Arkanos is offline   Reply With Quote
Old 12-12-2005, 10:00 AM   #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??
Arkanos is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Abnormal Program Termination when executed from C:\Program Files\... m37h0d Windows Programming 48 09-26-2008 03:45 AM
Resetting virtual keys WalkerBurgin Windows Programming 2 08-18-2004 10:31 PM
Virtual Keys :: MFC kuphryn C++ Programming 1 03-17-2002 03:39 PM
C++ XML Class edwardtisdale C++ Programming 0 12-10-2001 11:14 PM
Exporting Object Hierarchies from a DLL andy668 C++ Programming 0 10-20-2001 01:26 PM


All times are GMT -6. The time now is 03:57 AM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0 RC2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22