Ayuda Proyecto editor de textos en turbo c.

eriion
30 de Octubre del 2008
Hola a todos tengo estoy comenzando mi carrera y me han pedido un proyecto de editor de textos elaborado en turbo c, hasta ahoro voy avanzando bien pero me he encontrado con algunos problemas a la hora de integrar l;o que he aprendido para hacer que funcione. Necesito saber como es que a la hora de capturar puedo hacer que al pulsar enter se salte un a linea usando posiciones ya que manejo una cadena de caracteres, ademas no he podido integrar mi procedimiento de captura a mi pantalla principal de menus.
El código es:
#include <conio.h>
#include <stdio.h>
#include <graphics.h>
#include <string.h>
#include <ctype.h>

void inicializa()
{ int gm, gd=DETECT;
initgraph (&gd, &gm,"C:\TC\BGI");
}

void cuadro (int x1, int y1, int x2, int y2, int relleno, int color)
{
int poly [8];

poly [0]= x1;
poly [1]= y1;
poly [2]= x2;
poly [3]= y1;
poly [4]= x2;
poly [5]= y2;
poly [6]= x1;
poly [7]= y2;

setfillstyle (relleno,color);
fillpoly (4,poly);
}

void menu()
{

//Limites
setbkcolor (BLUE);
rectangle (0,14,getmaxx(),getmaxy());
setcolor (YELLOW);
settextstyle (2,0,0);
//Barra de titulo
cuadro (0,0,getmaxx(),14,1,LIGHTBLUE);
setcolor (WHITE);
settextstyle (2,0,0);
outtextxy (18,1,"Sin nombre 1 - TEXTER");
// Barra Menus
cuadro (0,14,65,30,1,LIGHTGRAY);
outtextxy (10,17,"ARCHIVO");
cuadro (65,14,130,30,1,LIGHTGRAY);
outtextxy (77,17,"EDICION");
cuadro (130,14,195,30,1,LIGHTGRAY);
outtextxy (149,17,"VER");
cuadro (195,14,260,30,1,LIGHTGRAY);
outtextxy (207,17,"FORMATO");
cuadro (260,14,325,30,1,LIGHTGRAY);
outtextxy (273,17,"AYUDA");
//Hoja
cuadro (30,55,610,480,1,WHITE);
getch();
}


void archivo()
{
//Limites
setbkcolor (BLUE);
rectangle (0,14,getmaxx(),getmaxy());
setcolor (YELLOW);
settextstyle (2,0,0);
//Barra de titulo
cuadro (0,0,getmaxx(),14,1,LIGHTBLUE);
setcolor (WHITE);
settextstyle (2,0,0);
outtextxy (18,1,"Sin nombre 1 - TEXTER");
// Barra Menus
cuadro (0,14,65,30,1,LIGHTGRAY);
outtextxy (10,17,"ARCHIVO");
cuadro (65,14,130,30,1,LIGHTGRAY);
outtextxy (77,17,"EDICION");
cuadro (130,14,195,30,1,LIGHTGRAY);
outtextxy (149,17,"VER");
cuadro (195,14,260,30,1,LIGHTGRAY);
outtextxy (207,17,"FORMATO");
cuadro (260,14,325,30,1,LIGHTGRAY);
outtextxy (273,17,"AYUDA");
//Hoja
cuadro (30,55,610,480,1,WHITE);
//SUBMENU ARCHIVO
cuadro (0,30,65,114,1,LIGHTBLUE);
cuadro (0,30,65,44,1,LIGHTBLUE);
outtextxy (15,32,"Abrir");
cuadro (0,44,65,58,1,LIGHTBLUE);
outtextxy (15,46,"Nuevo");
cuadro (0,58,65,72,1,LIGHTBLUE);
outtextxy (15,60,"Guardar");
cuadro (0,72,65,86,1,LIGHTBLUE);
outtextxy (15,74,"Guardar como");
cuadro (0,86,65,100,1,LIGHTBLUE);
outtextxy (15,87,"Imprimir");
cuadro (0,100,65,114,1,LIGHTBLUE);
outtextxy (15,102,"Salir");

getch();
}

void edicion()
{
//Limites
setbkcolor (BLUE);
rectangle (0,14,getmaxx(),getmaxy());
setcolor (YELLOW);
settextstyle (2,0,0);
//Barra de titulo
cuadro (0,0,getmaxx(),14,1,LIGHTBLUE);
setcolor (WHITE);
settextstyle (2,0,0);
outtextxy (18,1,"Sin nombre 1 - TEXTER");
// Barra Menus
cuadro (0,14,65,30,1,LIGHTGRAY);
outtextxy (10,17,"ARCHIVO");
cuadro (65,14,130,30,1,LIGHTGRAY);
outtextxy (77,17,"EDICION");
cuadro (130,14,195,30,1,LIGHTGRAY);
outtextxy (149,17,"VER");
cuadro (195,14,260,30,1,LIGHTGRAY);
outtextxy (207,17,"FORMATO");
cuadro (260,14,325,30,1,LIGHTGRAY);
outtextxy (273,17,"AYUDA");
//Hoja
cuadro (30,55,610,480,1,WHITE);

//SUBMENU EDICION
cuadro (65,30,130,44,1,LIGHTBLUE);
outtextxy (79,32,"Seleccio...");
cuadro (65,44,130,58,1,LIGHTBLUE);
outtextxy (79,46,"Copiar");
cuadro (65,58,130,72,1,LIGHTBLUE);
outtextxy (79,60,"Cortar");
cuadro (65,72,130,86,1,LIGHTBLUE);
outtextxy (79,74,"Pegar");
}

void ver()
{
//Limites
setbkcolor (BLUE);
rectangle (0,14,getmaxx(),getmaxy());
setcolor (YELLOW);
settextstyle (2,0,0);
//Barra de titulo
cuadro (0,0,getmaxx(),14,1,LIGHTBLUE);
setcolor (WHITE);
settextstyle (2,0,0);
outtextxy (18,1,"Sin nombre 1 - TEXTER");
// Barra Menus
cuadro (0,14,65,30,1,LIGHTGRAY);
outtextxy (10,17,"ARCHIVO");
cuadro (65,14,130,30,1,LIGHTGRAY);
outtextxy (77,17,"EDICION");
cuadro (130,14,195,30,1,LIGHTGRAY);
outtextxy (149,17,"VER");
cuadro (195,14,260,30,1,LIGHTGRAY);
outtextxy (207,17,"FORMATO");
cuadro (260,14,325,30,1,LIGHTGRAY);
outtextxy (273,17,"AYUDA");
//Hoja
cuadro (30,55,610,480,1,WHITE);
//SUBMENU VER
cuadro (130,30,195,44,1,LIGHTBLUE);
outtextxy (135,32,"Barra de...");
cuadro (130,44,195,58,1,LIGHTBLUE);
outtextxy (135,46,"Vista Prev.");
getch();
}

void formato()
{
//Limites
setbkcolor (BLUE);
rectangle (0,14,getmaxx(),getmaxy());
setcolor (YELLOW);
settextstyle (2,0,0);
//Barra de titulo
cuadro (0,0,getmaxx(),14,1,LIGHTBLUE);
setcolor (WHITE);
settextstyle (2,0,0);
outtextxy (18,1,"Sin nombre 1 - TEXTER");
// Barra Menus
cuadro (0,14,65,30,1,LIGHTGRAY);
outtextxy (10,17,"ARCHIVO");
cuadro (65,14,130,30,1,LIGHTGRAY);
outtextxy (77,17,"EDICION");
cuadro (130,14,195,30,1,LIGHTGRAY);
outtextxy (149,17,"VER");
cuadro (195,14,260,30,1,LIGHTGRAY);
outtextxy (207,17,"FORMATO");
cuadro (260,14,325,30,1,LIGHTGRAY);
outtextxy (273,17,"AYUDA");
//Hoja
cuadro (30,55,610,480,1,WHITE);
//SUBMENU FORMATO
cuadro (195,30,260,44,1,LIGHTBLUE);
outtextxy (205,32,"Fuente");
cuadro (195,44,260,58,1,LIGHTBLUE);
outtextxy (205,46,"Parrafo");
getch();
}

void ayuda()
{
//Limites
setbkcolor (BLUE);
rectangle (0,14,getmaxx(),getmaxy());
setcolor (YELLOW);
settextstyle (2,0,0);
//Barra de titulo
cuadro (0,0,getmaxx(),14,1,LIGHTBLUE);
setcolor (WHITE);
settextstyle (2,0,0);
outtextxy (18,1,"Sin nombre 1 - TEXTER");
// Barra Menus
cuadro (0,14,65,30,1,LIGHTGRAY);
outtextxy (10,17,"ARCHIVO");
cuadro (65,14,130,30,1,LIGHTGRAY);
outtextxy (77,17,"EDICION");
cuadro (130,14,195,30,1,LIGHTGRAY);
outtextxy (149,17,"VER");
cuadro (195,14,260,30,1,LIGHTGRAY);
outtextxy (207,17,"FORMATO");
cuadro (260,14,325,30,1,LIGHTGRAY);
outtextxy (273,17,"AYUDA");
//Hoja
cuadro (30,55,610,480,1,WHITE);

//SUBMENU AYUDA
cuadro (260,30,325,58,1,LIGHTBLUE);
outtextxy (275,32,"Ayuda");
cuadro (260,44,325,58,1,LIGHTBLUE);
outtextxy (265,46,"Acerca de");
getch();
}

void mueve()
{
char tecla;
int i=1;
menu();
do {
switch (i)
{
case 1: cuadro (0,14,65,30,1,RED);
outtextxy (10,17,"ARCHIVO");
break;
case 2: cuadro (65,14,130,30,1,RED);
outtextxy (77,17,"EDICION");
break;
case 3: cuadro (130,14,195,30,1,RED);
outtextxy (149,17,"VER");
break;
case 4: cuadro (195,14,260,30,1,RED);
outtextxy (207,17,"FORMATO");
break;
case 5: cuadro (260,14,325,30,1,RED);
outtextxy (273,17,"AYUDA");
break;
}

tecla=getch();

switch (i)
{
case 1: cuadro (0,14,65,30,1,LIGHTGRAY);
outtextxy (10,17,"ARCHIVO");
break;
case 2: cuadro (65,14,130,30,1,LIGHTGRAY);
outtextxy (77,17,"EDICION");
break;
case 3: cuadro (130,14,195,30,1,LIGHTGRAY);
outtextxy (149,17,"VER");
break;
case 4: cuadro (195,14,260,30,1,LIGHTGRAY);
outtextxy (207,17,"FORMATO");
break;
case 5: cuadro (260,14,325,30,1,LIGHTGRAY);
outtextxy (273,17,"AYUDA");
break;
}

switch (tecla)
{
case 'x0': tecla= getch();
switch (tecla)
{
case 75: i--;break;
case 77: i++;break;
}
if (i>5) i=1;
if (i<1) i=5;
break;

case 13: switch (i)
{
case 1: archivo();
{
char tecla;
int i=1;

do {
switch (i)
{

case 1: cuadro (0,30,65,44,1,RED);
outtextxy (15,32,"Abrir");
break;
case 2: cuadro (0,44,65,58,1,RED);
outtextxy (15,46,"Nuevo");
break;
case 3: cuadro (0,58,65,72,1,RED);
outtextxy (15,60,"Guardar");
break;
case 4: cuadro (0,72,65,86,1,RED);
outtextxy (15,74,"Guardar como");
break;
case 5: cuadro (0,86,65,100,1,RED);
outtextxy (15,87,"Imprimir");
break;
case 6: cuadro (0,100,65,114,1,RED);
outtextxy (15,102,"Salir");
break;

}

tecla=getch();

switch (i)
{
case 1: cuadro (0,30,65,44,1,LIGHTBLUE);
outtextxy (15,32,"Abrir");
break;
case 2: cuadro (0,44,65,58,1,LIGHTBLUE);
outtextxy (15,46,"Nuevo");
break;
case 3: cuadro (0,58,65,72,1,LIGHTBLUE);
outtextxy (15,60,"Guardar");
break;
case 4: cuadro (0,72,65,86,1,LIGHTBLUE);
outtextxy (15,74,"Guardar como");
break;
case 5: cuadro (0,86,65,100,1,LIGHTBLUE);
outtextxy (15,87,"Imprimir");
break;
case 6: cuadro (0,100,65,114,1,LIGHTBLUE);
outtextxy (15,102,"Salir");
break;

}

switch (tecla)
{
case 'x0': tecla= getch();
switch (tecla)
{
case 72: i--;break;
case 80: i++;break;
}
if (i>6) i=1;
if (i<1) i=6;
break;

case 13: switch (i)
{
case 1: tecla=27; break;
case 2: tecla=27; break;
case 3: tecla=27; break;
case 4: tecla=27; break;
case 5: tecla=27; break;
case 6: tecla=27; break;
}
if (i!=3) menu();
break;

}


}while (tecla!=27); }
break;
case 2: edicion();
{
char tecla;
int i=1;

do {
switch (i)
{

case 1: cuadro (65,30,130,44,1,RED);
outtextxy (79,32,"Seleccio...");
break;
case 2: cuadro (65,44,130,58,1,RED);
outtextxy (79,46,"Copiar");
break;
case 3: cuadro (65,58,130,72,1,RED);
outtextxy (79,60,"Cortar");
break;
case 4: cuadro (65,72,130,86,1,RED);
outtextxy (79,74,"Pegar");
break;

}

tecla=getch();

switch (i)
{

case 1: cuadro (65,30,130,44,1,LIGHTBLUE);
outtextxy (79,32,"Seleccio...");
break;
case 2: cuadro (65,44,130,58,1,LIGHTBLUE);
outtextxy (79,46,"Copiar");
break;
case 3: cuadro (65,58,130,72,1,LIGHTBLUE);
outtextxy (79,60,"Cortar");
break;
case 4: cuadro (65,72,130,86,1,LIGHTBLUE);
outtextxy (79,74,"Pegar");
break;

}


switch (tecla)
{
case 'x0': tecla= getch();
switch (tecla)
{
case 72: i--;break;
case 80: i++;break;
}
if (i>4) i=1;
if (i<1) i=4;
break;

case 13: switch (i)
{
case 1: tecla=27; break;
case 2: tecla=27; break;
case 3: tecla=27; break;
case 4: tecla=27; break;
}
if (i!=3) menu();
break;

}


}while (tecla!=27); }
break;

case 3: ver();
{
char tecla;
int i=1;

do {
switch (i)
{

case 1: cuadro (130,30,195,44,1,RED);
outtextxy (135,32,"Barra de...");
break;
case 2: cuadro (130,44,195,58,1,RED);
outtextxy (135,46,"Vista Prev.");
break;

}

tecla=getch();

switch (i)
{

case 1: cuadro (130,30,195,44,1,LIGHTBLUE);
outtextxy (135,32,"Barra de...");
break;
case 2: cuadro (130,44,195,58,1,LIGHTBLUE);
outtextxy (135,46,"Vista Prev.");
break;

}

switch (tecla)
{
case 'x0': tecla= getch();
switch (tecla)
{
case 72: i--;break;
case 80: i++;break;
}
if (i>2) i=1;
if (i<1) i=2;
break;

case 13: switch (i)
{
case 1: tecla=27; break;
case 2: tecla=27; break;
}
if (i!=3) menu();
break;

}


}while (tecla!=27); }
break;

case 4: formato();
{
char tecla;
int i=1;

do {
switch (i)
{

case 1: cuadro (195,30,260,44,1,RED);
outtextxy (205,32,"Fuente");
break;
case 2: cuadro (195,44,260,58,1,RED);
outtextxy (205,46,"Parrafo");
break;
}

tecla=getch();

switch (i)
{

case 1: cuadro (195,30,260,44,1,LIGHTBLUE);
outtextxy (205,32,"Fuente");
break;
case 2: cuadro (195,44,260,58,1,LIGHTBLUE);
outtextxy (205,46,"Parrafo");
break;
}

switch (tecla)
{
case 'x0': tecla= getch();
switch (tecla)
{
case 72: i--;break;
case 80: i++;break;
}
if (i>2) i=1;
if (i<1) i=2;
break;

case 13: switch (i)
{
case 1: tecla=27; break;
case 2: tecla=27; break;
}
if (i!=3) menu();
break;
}


}while (tecla!=27); }
break;

case 5: ayuda();
{
char tecla;
int i=1;

do {
switch (i)
{

case 1: cuadro (260,30,325,44,1,RED);
outtextxy (275,32,"Ayuda");
break;
case 2: cuadro (260,44,325,58,1,RED);
outtextxy (265,46,"Acerca de");
break;

}

tecla=getch();

switch (i)
{
case 1: cuadro (260,30,325,44,1,LIGHTBLUE);
outtextxy (275,32,"Ayuda");
break;
case 2: cuadro (260,44,325,58,1,LIGHTBLUE);
outtextxy (265,46,"Acerca de");
break;
}

switch (tecla)
{
case 'x0': tecla= getch();
switch (tecla)
{
case 72: i--;break;
case 80: i++;break;
}
if (i>2) i=1;
if (i<1) i=2;
break;

case 13: switch (i)
{
case 1: tecla=27; break;
case 2: tecla=27; break;

}
if (i!=3) menu();
break;

}


}while (tecla!=27); }
break;
}
if (i!=27) menu();
break;

}


}while (tecla!=27);
}



void main()
{
inicializa();
menu();
mueve();

}
y para la captura:
void captura()
{char tecla, *cad;
int pos, int i=1;
clearviewport();
cad[0]= 'x0';
do{
setcolor(WHITE);
outtextxy(100,100,cad);
tecla=getch();
if(isalpha(tecla)||tecla==' ')
{pos=strlen(cad);
cad[pos]=tecla;
cad[pos+1]='x0';
}
if(tecla==8)
{setcolor(BLACK);
outtextxy(100,i*100,cad);
pos=strlen(cad);
cad[pos-1]='x0';
}
if(tecla==13)
{outtextxy(100,200,cad);}
}while(tecla !=27);
}

israel
30 de Octubre del 2008
me marca un error en donde dice "y para la captura" si se lo quito o lo pongo como comentario me marca mas errores te agradeceria tu ayuda ya que me marca este error gracias.