/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

codificacion de teclas en c++

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
adrian_alaez



Registrado: 11 Nov 2007
Mensajes: 2

MensajePublicado: 11/11/2007 3:24 am
Título: codificacion de teclas en c++

Hola a todos,tengo un pequeño problemilla,vamos a ver,m han mandado hacer una especie de procesador de textos muy muy sencillo en c++,utilizando el devc++.Pues bien alguna condicines del programa exigen realizar algo especifico como salto de linea o borrado o finalizacion del programa cuando le das a teclas como F1,o las flechas ....en fin todas esas teclas que cuando ejecutas el programa en consola y las apretas no hacen nada,creo entender que se llaman teclas especiales,y queria que alguien si sabe y puede me echase un cable,gracias.
_________________
ALAEZ
Volver arriba
mamntc02



Registrado: 30 Abr 2007
Mensajes: 266

MensajePublicado: 12/11/2007 12:36 am
Título:

Hola,

Échale un vistazo a este post. Creo q te irá bien.

Saludos.
Volver arriba
adrian_alaez



Registrado: 11 Nov 2007
Mensajes: 2

MensajePublicado: 12/11/2007 4:09 am
Título:

Gracias este ya lo estuve mirando yo,pero no saco nada claro,
solo se que con el enter me funciono y con las demas teclas especiales me peta,
el codigo de lo que llevo hecho es este:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>



int main(int argc, char *argv[])
{
textbackground(BLUE);
system("cls");

int ancho=0,nlineas=0,i=0,x=0,y=0,j=0,error=0;
char texto[10][50];
char tecla;


textcolor(12);
gotoxy(20,3);
printf("********************");
gotoxy(20,4);
printf("* ");
textcolor(121);
printf("EDITOR DE TEXTOS");
normvideo();
lowvideo();
textbackground(BLUE);
textcolor(12);
printf(" *");
gotoxy(20,5);
printf("********************");
normvideo();
lowvideo();


textcolor(14);
textbackground(BLUE);
gotoxy(5,10);
printf("Por Favor rellene unos datos previos de configuracion. Gracias");
normvideo();
lowvideo();


gotoxy(15,15);
highvideo();
textbackground(BLUE);
printf("Introduzca el ancho de pagina que ");
gotoxy(15,16);
printf("desea aplicar al Editor --->> ");
error=0;
gotoxy(15,17);
printf("Entre 1 y 50");
gotoxy(44,16);
while (error==0)
{
fflush(stdin);
error=scanf("%d",&ancho);
if (error==0)
{
gotoxy(15,1Cool;
printf("Error, Introduce unnumero --->>");
}
}
gotoxy(15,1Cool;
printf(" ");
gotoxy(44,16);
printf("%d",ancho);



gotoxy(15,20);
printf("Introduzca el Numero de Lineas Maximo");
gotoxy(15,21);
printf("que quiere que tenga el Editor --->> ");
error=0;
gotoxy(51,21);
while (error==0)
{
fflush(stdin);
error=scanf("%d",&nlineas);
if (error==0)
{
gotoxy(15,22);
printf("Error, Introduce unnumero --->>");
}
}
gotoxy(15,22);
printf(" ");
gotoxy(51,21);
printf("%d",nlineas);
textbackground(BLUE);


system("cls");


textcolor(12); //Imprimir Titulo
gotoxy(20,3);
printf("********************");
gotoxy(20,4);
printf("* ");
textcolor(121);
printf("EDITOR DE TEXTOS");
normvideo();
lowvideo();
textbackground(BLUE);
textcolor(12);
printf(" *");
gotoxy(20,5);
printf("********************");
normvideo();
lowvideo();


textcolor(14); //Dibujar cuadro
gotoxy(5,7);
printf("%c",218);
for (i=1;i<=ancho;i++)
{
printf("%c",196);
}
printf("%c",191);
y=8;
for (i=1;i<=nlineas;i++)
{
gotoxy(5,y);
printf("%c",179);
for (j=1;j<=ancho;j++)
{
printf(" ");
}
printf("%c",179);
y++;
}
gotoxy(5,y);
printf("%c",192);
for (i=1;i<=ancho;i++)
{
printf("%c",196);
}
printf("%c",217);
normvideo();
lowvideo();


gotoxy(60,7); // Imprimir Menu Secundario
textcolor(151);
textbackground(BLUE);
printf("%c MENU %c",17,16);
normvideo();
lowvideo();
textcolor(12);
textbackground(BLUE);
gotoxy(60,9);
printf("%cSalir -- F1",4);
gotoxy(50,24);
textbackground(BLUE);
x=6;
y=8;
printf("Posicion x=%3d, y=%3d.",x,y);
gotoxy(60,10);
textbackground(BLUE);
printf("%cBorrar -- DEL",4);
gotoxy(60,11);
textbackground(BLUE);
printf("%cARRIBA -- Flecha",4);
gotoxy(60,12);
textbackground(BLUE);
printf("%cABAJO -- Flecha",4);
gotoxy(60,13);
textbackground(BLUE);
printf("%cDERECHA -- -->",4);
gotoxy(60,14);
textbackground(BLUE);
printf("%cIZQUIERDA -- <--",4);
normvideo();
lowvideo();


gotoxy(x,y);
for (i=0;i<nlineas;i++)
{
for (j=0;j<ancho;j++)
{

highvideo();
fflush(stdin);
texto[i][j]=getche();
normvideo();
lowvideo();


if (x==ancho+5) // Validar saltos de linea automaticos
{
y++;
x=6;
gotoxy(x,y);
}

if (texto[i][j]==13) //Validar tecla enter
{
x=6;
y++;
gotoxy(50,24);
textcolor(12);
textbackground(BLUE);
printf("Posicion x=%3d, y=%3d",x,y);
normvideo();
lowvideo();
}
else
{
x++;
gotoxy(50,24);
textcolor(12);
textbackground(BLUE);
printf("Posicion x=%3d, y=%3d",x,y);
normvideo();
lowvideo();
}



if (y>=nlineas+Cool //Validar Fin de Lineas
{
textcolor(14);
textbackground(BLUE);
gotoxy(6,nlineas+9);
printf("No dispones de mas LINEAS");
normvideo();
lowvideo();
}

while (y==nlineas+Cool //Validar fin del texto (lineas)
{
gotoxy(x,nlineas+7);
getch();
}

while (i==nlineas+8 && j==ancho) //Validar fin del texto (Caracteres)
{
gotoxy(ancho+5,nlineas+7);
getch();
}



gotoxy(50,24);
textcolor(12);
textbackground(BLUE);
printf("Posicion x=%3d, y=%3d",x,y);
normvideo();
lowvideo();

gotoxy(x,y);


}
}






normvideo();
lowvideo();


getch();
return 0;
}





Deberia validar si presiono una tecla especial a medida que voy gusrdandolo en la tabla de caracteres,y por mas que he leido foros,me ponen que hay que hacer un doble getch();y no se como insertarle un doble gets y que me funcione todo lo otro.


Gracias de ante mano.
_________________
ALAEZ
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 110

MensajePublicado: 12/11/2007 2:17 pm
Título:

Código:

tecla=getch();

switch(tecla)
{
case 0:
tecla=getch();

  switch(tecla)
  {
  case 0x48://flecha arriba
  break;
  case 0x50://flecha abajo
  break;
  case 0x4d://flecha derecha
  break;
  .......
  .....
}
break;
case 0x0d://enter
break;
case 0x1b://escape
break;
case 'A'://letra a
break;
.....
.....
}


Los codigos te los averiguas (codigos secundarios, teclase de funcion, codigos extendidos, en algun libro en internet)
_________________
Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón.
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com