ya probaste con getch()???, en c++ si funciona (no estoy seguro si en visual c++ también), hay que tener cuidado cuando utilizás teclas extendidas, como las flechas, por ejemplo, estas retornan 2 valores, el primero es un cero, y el segundo valor es el de la flecha que presionaste, tendiras que validar eso.
- a=getch(); 
- if(a==0) 
-  a=getch(); 
-   
tambien existe getchar(), pero esta hace eco en pantalla