![]() |
| ||
| how to get the last key pressed without stopping the programm ? Hello Everyone! That's my first post on this forum and I'd like to greet Everyone I got a question about getting the last key pressed without stopping the programm. I know that getchar(), cin, getch() commands don't allow to do that. Have You any idea how to solve this problem? I 'd like to do sth like that: while(play){ char a; a=get_last_key_without_stopping_the_programm(); // Do You know a function similiar to that? switch(a){ case: 'W' : do_sth(); break; case 'S' : do_sth_else(); break; default: do_default(); break; } a='*'; } |
| ||
| Re: how to get the last key pressed without stopping the programm ? >I know that getchar(), cin, getch() commands don't allow to do that. getch (and getche) does, but it isn't a standard function and won't exist on all implementations. What compiler and operating system do you use? |
| ||
| Re: how to get the last key pressed without stopping the programm ? Well, i think i know what you mean but it may help to know what kind of program you want to make. If it's a win32 application, checking for keyboard input during a loop is easy, but if this isnt a win32 application, keyboard input can still be checked, its just a bit more complicated. |
| ||
| Re: how to get the last key pressed without stopping the programm ? Quote:
MM |
| ||
| Re: how to get the last key pressed without stopping the programm ? Ok well, the reason why it's easy in win32 to check for keyboard input is because you can check for a window message WM_KEYDOWN. Each key has a specific virtual key code, but, you can figure that out. Heres a simple code snippet that checks for if the key pressed was the esc key. (this is compilable if you know where to put it in your program) switch(message) |
| ||
| Re: how to get the last key pressed without stopping the programm ? Quote:
#include <windows.h> |
| ||
| Re: how to get the last key pressed without stopping the programm ? Quote:
|
| ||
| Re: how to get the last key pressed without stopping the programm ? How would I do a similar thing using TC(required for school), which cannot use Windows.h? (Uses DOS) |
| ||
| Re: how to get the last key pressed without stopping the programm ? About the solution given by Mango Maniac, does anyone knows how to do the same but using a Matlab mex file? I runned a modified version of his program in Visual C++ and it worked, but when I put the same code in the Matlab "mexfuction" the program compile and runs, but it doesn't respond when I press the keys. Here is the code: #include <windows.h> #include <string> #include <iostream> #include <stdio.h> #include "C:\MATLAB7\extern\include\mex.h" CHAR buffer[1] = ""; DWORD w; HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); HANDLE keyboard = GetStdHandle(STD_INPUT_HANDLE); INPUT_RECORD input[1]; void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[]) { mexPrintf("para cima"); while (1) { ReadConsoleInput(keyboard, input, 1, &w); if(input[0].EventType == KEY_EVENT && input[0].Event.KeyEvent.bKeyDown) { buffer[0] = input[0].Event.KeyEvent.uChar.AsciiChar; if(buffer[0] == 13) { break;} if(buffer[0] == 56) {mexPrintf("para cima");} if(buffer[0] == 50) {mexPrintf("para baixo");} if(buffer[0] == 52) {mexPrintf("esquerda");} if(buffer[0] == 54) {mexPrintf("direita");} } } } I'm using a windows XP, Matlab 7 and Visual C++ 6.0 |
| All times are GMT -4. The time now is 2:13 am. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC