Hola

Solo disponible en BuenasTareas
  • Páginas : 6 (1272 palabras )
  • Descarga(s) : 0
  • Publicado : 16 de noviembre de 2010
Leer documento completo
Vista previa del texto
Cool C/C++ :: Programacion en C/C++

General - Leer Teclas F1...F12...ESC...Flechas de navegacion, Dev-C++!

madeye12 - Sun Dec 24, 2006 7:12 pm
Asunto: Leer Teclas F1...F12...ESC...Flechas de navegacion, Dev-C++!

Bueno he publicado esto como un nuevo tema a pesar de que adrian (webmaster) ya lo habia publicado en la zona de FAQ aunq la solucion que el propone como me lo dijo por correoes para borland c++ y Turbo c++ dado que ahi se cuenta con la libreria "bios.h". Le he estado buscando y gracias a la pequeña orientacion de una amifa lo he podido resolver en Dev-C++ me ha costado trabajo y lo comparto debido a que lo busque yo y no encontre algo claro. Se que tal vez sere criticado por no utilizar librerias estandar como stdio.h, stdlib.h, etc. Pero creo k cada programador hacelas cosas a su manera aparte de que lo mejor seria que conocieramos todo lo que existe lo estandar y lo no estandar para poder aprovechar cada caracteristica al maximo asi como saber adaptar programas hechos por otros. El motivo por el que use "cout", "cin" y "system()" es debido a que yo aprendi a programar en C++ por mi cuenta y aprendi con scanf() y printf() aunq no aprendi al maximo si me creemis bases, despues entre a estudiar a una Universidad y ahi me enseño el maestro como se utilizaba el cout y el cin que eran de mi total desconocimiento el maetsro me dejo escoger libremente cual queria usar pero mis compañeros no entendian lo que hacia y tenia que explicarles por lo que me decidi a utilzar lo mismo que ellos para que nos entendieramos a pesar que se utilizar el scanf y el printf."conio,h" tengo entendido que tampoco es estandar pero hace poco lei "no todo se puede hacer siempre con lo estandar" asi que aprovecho la funcion getch() de la libreria conio.h. 

Bueno fianlmente aqui les dejo el codigo con su respectiva explicacion. 

#include <iostream> 
#include <conio.h> 
using namespace std; 
#define ARR 72 
#define ABJ 80 
#define DER 77 
#define IZQ75 

main() { 
int opcion; 
cout << "Presiona una de las teclas de navegacion: "; 
if (getch() == 224) 
opcion = getch(); 
else 
opcion = -1; 
switch (opcion) { 
case ARR: 
cout << "Presionaste arriba..."; 
break; 
case ABJ: 
cout << "Presionaste abajo..."; 
break; 
case DER: 
cout << "Presionaste derecha..."; 
break; 
case IZQ: 
cout <<"Presionaste izquierda..."; 
break; 
default: 
cout << "Tecla no reconocida..."; 

system("pause"); 


Al utilizar getch se lee una tecla presionado. No se bien como funcione esto aunqe tengo entendido que el getch regresa una tecla presionada desde el teclado sin mostrarla en pantalla. Al estar analizando me di cuenta que las teclas de navegacion cada vez que son presionadas retornan unvalor de 224 (cualquiera que se presione) y si se emplea otro getch seguido del primero no se requiere volver a presionarlas sino que regresa otro valor distinto. Asi que lo primero que hago es comparar si la tecla presionada regresa un 224 se trata de una de las teclas de navegacion por lo que el siguiente valor que regrese getch sera el de la tecla correspondiente. En caso de que se otra latecla presionada el valor de la opcion sera -1. Lo mismo puede funcionar para las teclas de funcion (f1...f12) ya que estas teclas regresan primero un "0" y seguido el de la tecla correspondiente asi que en lugar de comparar con 224 seria con 0. 

Creo k al presionar estas teclas se queda un valor almacenado en el buffer por eso es que funciona de esa manera y primero regresa 224 y luego el valorcorrespondiente de la tecla. Ya que para el segundo getch no hay necesidad de volverlo a presionar en caso de k sea una de las teclas de navegacion o las de funcion. 

Libreria: iostream.h (<iostream> using namespace std) 
funciones empleadas: cout, cin, system(); 

Libreria: conio.h 
funciones: getch(); 

La version del Dev-C++ que yo tengo (Beta 5, 4.9.9.3) incluye una version del...
tracking img