Is this a win32 console program? Because if it is, don't try to use kbhit().
Here's an alternative:
Code:
// Waits for keypress event and returns that key (virtual-key code)
WORD GetKeypress()
{
HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE);
INPUT_RECORD irEvent;
DWORD dwNumEventsRead;
WORD wReturn;
for (;;)
{
WaitForSingleObject(hStdIn, INFINITE);
PeekConsoleInput(hStdIn, &irEvent, 1, &dwNumEventsRead);
if ((irEvent.EventType == KEY_EVENT) && (irEvent.Event.KeyEvent.bKeyDown))
{
ReadConsoleInput(hStdIn, &irEvent, 1, &dwNumEventsRead);
wReturn = irEvent.Event.KeyEvent.wVirtualKeyCode;
FlushConsoleInputBuffer(hStdIn);
return wReturn;
}
else
ReadConsoleInput(hStdIn, &irEvent, 1, &dwNumEventsRead);
}
}
And if you're not implementing a Windows console program, then sorry.