| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
adrian_alaez
Registrado: 11 Nov 2007 Mensajes: 2
| Publicado: 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
| Publicado: 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
| Publicado: 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,1 ; printf("Error, Introduce unnumero --->>"); } } gotoxy(15,1 ; 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+ //Validar Fin de Lineas { textcolor(14); textbackground(BLUE); gotoxy(6,nlineas+9); printf("No dispones de mas LINEAS"); normvideo(); lowvideo(); }
while (y==nlineas+ //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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |