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