SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Forly en Martes 12 de Agosto de 2008, 17:24
-
Hola a todos:
Me he pasado del Turbo C++ de Borland a Code::Blocks.
En general me las estoy arreglando bien, pero tengo un problema con la lectura de teclas especiales como ESCAPE, las teclas de Función, Inicio, flechas y otras.
En Turbo C++, usaba algo así
//====================================================
int main()
{
char tecla=0;
while(tecla!=27)
{
tecla=cin.get();
cout << tecla << " - " << (int) tecla;
if (!tecla)
{
// En este caso la tecla es especial
// Hago una segunda lectura
tecla=cin.get();
cout << " --> " << tecla << " - " << (int) tecla;
}
cout << endl;
}
getchar();
return 0;
}
//====================================================
Pero una codificación de estas características, adaptada a la sintaxis del code::blocls, claro está, no funciona.
¿Alguien puede darme una pista de cómo hacerlo?
Desde ya les agradezco el tiempo que me dedican.
Un abrazo.
-
si, el problema con esas teclas es el buffer de teclado, borland tiene la libreria conio.h donde podes encontrar funciones q interceptan el buffer de teclado y logran agarrar esas teclas, funciones como getche(), getch(), y creo q hay una mas...
no es ansii C asique para poder usarlas necesitas borland :S
desconozco la forma de acceder a ellas sin la conio.h
saludos!
-
Podes usar la API de Windows ReadConsoleInput (http://msdn.microsoft.com/en-us/library/ms684961(VS.85).aspx), aca tenes un ejemplo:
Reading Input Buffer Events (http://msdn.microsoft.com/en-us/library/ms685035(VS.85).aspx).
-
Gracias a ambos:
Segui los consejos de Eternal Idol, y me metí con las API.
Como resultado logré escribir una librería "teclado.h", que si bien recién tiene 2 (dos) funciones, bastan para la lectura
de teclas en modo texto.
Las dos funciones son:
1) leerTecla() -> equivalente a getch();
2) hayTecla() -> equivalente a kbhit();
En agradecimiento a sus consejos y con el solo interés de compartir, les adjunto el código.
Nuevamente gracias.
-
denada, que buena actitud ;)
ahi lo veo.
nos vemos