0

Hi,
i am making a text editor with mouse programming.Given is my code .the compiler is not giving any error but i am unable to use enter,delete,backspace and arrow keys .
can any one please tell me the logic with which i can make my project more better.
THANKS in advance to all.

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<process.h>
#include<dos.h>
#include<graphics.h>
#include<stdlib.h>
#include<string.h>
#include<dos.h>

graphic(void);

#define sett() settextstyle(2,0,4)
#define PATT printf("\n ************************************************************************** \n");
#define PATTERN printf("\n ************************************************************************** \n");
#define jk 10

//GLOBAL VARIABLES
char str[100];
int point=0;
int size=1;
int type=0;
static int mat1[jk][jk], mat2[jk][jk];
int const num1=7;
float myarray[num1][num1];


//FUNCTIONS
void first(void);
initmouse();
void showmouseptr();
void getmousepos(int *,int *,int *);

open();
save();
save_as();
new_file();
cut();
copy();
paste();
bold();
italic();
underline();
all_right();
all_left();
all_mid();
all_just();
highlight();
ssaver();

union REGS i,o;

void main(void)
{
ssaver();
first();
}


int left,right,top,bottom;


void first()
{
int gd=DETECT,gm,maxx,maxy,y1,y2,fst;
int left,right,top,bottom;
initgraph(&gd,&gm,"c:\\tc\\bgi");

if(initmouse()==0)
{
closegraph();
restorecrtmode();
printf("\nMouse driver not loaded");
exit(1);
}

left = getmaxx() -getmaxx()+1;
   top = getmaxy()-getmaxy()+1;
   right = getmaxx();
   bottom = getmaxy()-getmaxy()+20;
   setcolor(BLUE);
      /* draw a rectangle */
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"file name");

   setbkcolor(LIGHTGRAY);

   right=getmaxx()/7;
   top=bottom;
   bottom=bottom+20;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"select");

   left=right;
   right=(getmaxx()/5)*2;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"text_type");

   settextstyle(0,0,1);
   outtextxy(167,top+10,"A");
   rectangle(165,top,187,bottom);
   settextstyle(4,0,1);
   outtextxy(190,top,"A");
   rectangle(187,top,209,bottom);
   settextstyle(3,0,1);
   outtextxy(212,top,"A");
   rectangle(209,top,231,bottom);
   settextstyle(1,0,1);
   outtextxy(235,top,"A");
   rectangle(231,top,right,bottom);

   settextstyle(0,0,1);

   left=right;
   right=(getmaxx()/5)*3;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"t_size");

   rectangle(320,top,335,bottom);
   outtextxy(322,top+10,"s");
   rectangle(335,top,350,bottom);
   outtextxy(337,top+10,"n");
   rectangle(350,top,365,bottom);
   outtextxy(352,top+10,"l");
   rectangle(365,top,right,bottom);
   outtextxy(367,top+10,"vl");

   left=right;
   right=(getmaxx()/5)*4;
   rectangle(left,top,right,bottom);
   setcolor(RED);
   outtextxy(left+6,top+10,"A");
   setcolor(BLUE);

   setfillstyle(SOLID_FILL,BLUE);
   bar3d(400,top,418,bottom,0,0);
   setfillstyle(SOLID_FILL,9);
   bar3d(418,top,436,bottom,0,0);
   setfillstyle(SOLID_FILL,10);
   bar3d(436,top,454,bottom,0,0);
   setfillstyle(SOLID_FILL,4);
   bar3d(454,top,472,bottom,0,0);
   setfillstyle(SOLID_FILL,14);
   bar3d(472,top,490,bottom,0,0);
   setfillstyle(SOLID_FILL,15);
   bar3d(490,top,right,bottom,0,0);

   left=right;
   right=getmaxx();
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"bkc");

   setfillstyle(SOLID_FILL,0);
   bar3d(545,top,560,bottom,0,0);
   setfillstyle(SOLID_FILL,1);
   bar3d(560,top,575,bottom,0,0);
   setfillstyle(SOLID_FILL,2);
   bar3d(575,top,590,bottom,0,0);
   setfillstyle(SOLID_FILL,3);
   bar3d(590,top,605,bottom,0,0);
   setfillstyle(SOLID_FILL,4);
   bar3d(605,top,620,bottom,0,0);
   setfillstyle(SOLID_FILL,5);
   bar3d(620,top,right,bottom,0,0);

   left=1;
   right=getmaxx()/7;
   top=bottom;
   bottom=bottom+20;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"cut");

   left=right;
   right=(getmaxx()/7)*2;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"copy");

   left=right;
   right=(getmaxx()/7)*3;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"paste");

   left=right;
   right=(getmaxx()/7)*4;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"open ");

   left=right;
   right=(getmaxx()/7)*5;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"new ");

   left=right;
   right=(getmaxx()/7)*6;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"save ");

   left=right;
   right=getmaxx();
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"save as  ");

   left=1;
   right=(getmaxx()/8);
   top=bottom;
   bottom=bottom+20;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"bold");

   left=right;
   right=(getmaxx()/8)*2;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"italic");

   left=right;
   right=(getmaxx()/8)*3;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"underline");

   left=right;
   right=(getmaxx()/8)*4;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"right");

   left=right;
   right=(getmaxx()/8)*5;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"left");

   left=right;
   right=(getmaxx()/8)*6;
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"mid");

   left=right;
   right=getmaxx();
   rectangle(left,top,right,bottom);
   outtextxy(left+2,top+10,"highlight");

   setfillstyle(SOLID_FILL,6);
   bar3d(545,top,560,bottom,0,0);
   setfillstyle(SOLID_FILL,1);
   bar3d(560,top,575,bottom,0,0);
   setfillstyle(SOLID_FILL,2);
   bar3d(575,top,590,bottom,0,0);
   setfillstyle(SOLID_FILL,3);
   bar3d(590,top,605,bottom,0,0);
   setfillstyle(SOLID_FILL,4);
   bar3d(605,top,620,bottom,0,0);
   setfillstyle(SOLID_FILL,5);
   bar3d(620,top,right,bottom,0,0);

   rectangle(606,0,639,20);
   outtextxy(620,10,"X");

   left=1;
   right=getmaxx();
   top=bottom;
   bottom=getmaxy();


//restrictmouseptr(1,1,x,y);
showmouseptr();
int button,x1;

char t,temp[2]={"a"};
moveto(10,100);
while(1)

{
getmousepos(&button,&x1,&y1);
//textbackground(BLUE);
// setcolor(BLACK);

if(kbhit())
{
int y;
	if(getx()==(getmaxx()-10)||getx()>(getmaxx()-10))
	{
	int y=gety()+10;
	moveto(10,y);
	}
	t=getch();
	if(t=='\r')
	     {moveto(0,y+10);}
	temp[0]=t;
	outtext(temp);
	str[point]=t;
	point++;
}

if(x1>0 &&x1<639 &&y1>0 &&y1<20 && button==1){/*file name();*/}

if(x1>164 &&x1<186 &&y1>20 &&y1<40 && button==1){settextstyle(0,0,size);type=0;/*defultttype;*/}
if(x1>186 &&x1<209 &&y1>20 &&y1<40 && button==1){settextstyle(4,0,size);type=4;/*gothicttype;*/}
if(x1>209 &&x1<231 &&y1>20 &&y1<40 && button==1){settextstyle(3,0,size);type=3;/*senserrayttype;*/}
if(x1>231 &&x1<251 &&y1>20 &&y1<40 && button==1){settextstyle(1,0,size);type=1;/*triplexttype;*/}

if(x1>320 &&x1<335 &&y1>20 &&y1<40 && button==1){settextstyle(type,HORIZ_DIR,1);size=1;/*tsize;*/}
if(x1>335 &&x1<350 &&y1>20 &&y1<40 && button==1){settextstyle(type,HORIZ_DIR,2);size=2;/*tsize;*/}
if(x1>350 &&x1<365 &&y1>20 &&y1<40 && button==1){settextstyle(type,HORIZ_DIR,3);size=3;/*tsize;*/}
if(x1>365 &&x1<380 &&y1>20 &&y1<40 && button==1){settextstyle(type,HORIZ_DIR,4);size=4;/*tsize;*/}

if(x1>400 &&x1<416 &&y1>20 &&y1<40 && button==1){setcolor(BLUE);/*tcolor;*/}
if(x1>416 &&x1<437 &&y1>20 &&y1<40 && button==1){setcolor(LIGHTBLUE);/*tcolor;*/}
if(x1>437 &&x1<453 &&y1>20 &&y1<40 && button==1){setcolor(LIGHTGREEN);/*tcolor;*/}
if(x1>453 &&x1<472 &&y1>20 &&y1<40 && button==1){setcolor(RED);/*tcolor;*/}
if(x1>472 &&x1<490 &&y1>20 &&y1<40 && button==1){setcolor(YELLOW);/*tcolor;*/}
if(x1>490 &&x1<507 &&y1>20 &&y1<40 && button==1){setcolor(WHITE);/*tcolor;*/}

if(x1>544 &&x1<560 &&y1>20 &&y1<40 && button==1){setbkcolor(0);/*bkcolor;*/}
if(x1>544 &&x1<574 &&y1>20 &&y1<40 && button==1){setbkcolor(1);/*bkcolor;*/}
if(x1>574 &&x1<590 &&y1>20 &&y1<40 && button==1){setbkcolor(2);/*bkcolor;*/}
if(x1>590 &&x1<603 &&y1>20 &&y1<40 && button==1){setbkcolor(3);/*bkcolor;*/}
if(x1>603 &&x1<621 &&y1>20 &&y1<40 && button==1){setbkcolor(4);/*bkcolor;*/}
if(x1>621 &&x1<639 &&y1>20 &&y1<40 && button==1){setbkcolor(5);/*bkcolor;*/}

if(x1>0   &&x1<90  &&y1>40 &&y1<60 && button==1){/*cut;*/}
if(x1>90  &&x1<180 &&y1>40 &&y1<60 && button==1){/*copy;*/}
if(x1>180 &&x1<273 &&y1>40 &&y1<60 && button==1){/*paste;*/}
if(x1>273 &&x1<365 &&y1>40 &&y1<60 && button==1){open();}
if(x1>365 &&x1<455 &&y1>40 &&y1<60 && button==1){new_file();}
if(x1>455 &&x1<546 &&y1>40 &&y1<60 && button==1){save();}
if(x1>546 &&x1<635 &&y1>40 &&y1<60 && button==1){save_as();}

if(x1>0   &&x1<75  &&y1>60 &&y1<80 && button==1){/*bold();*/}
if(x1>75  &&x1<158 &&y1>60 &&y1<80 && button==1){/*italic();*/}
if(x1>158 &&x1<236 &&y1>60 &&y1<80 && button==1){/*underline();*/}
if(x1>236 &&x1<316 &&y1>60 &&y1<80 && button==1){/*right();*/}
if(x1>316 &&x1<394 &&y1>60 &&y1<80 && button==1){/*left();*/}
if(x1>394 &&x1<474 &&y1>60 &&y1<80 && button==1){/*mid();*/}

if(x1>544 &&x1<560 &&y1>60 &&y1<80 && button==1){textbackground(6);/*highlighter;*/}
if(x1>544 &&x1<574 &&y1>60 &&y1<80 && button==1){textbackground(1);/*highlighter;*/}
if(x1>574 &&x1<590 &&y1>60 &&y1<80 && button==1){textbackground(2);/*highlighter;*/}
if(x1>590 &&x1<603 &&y1>60 &&y1<80 && button==1){textbackground(3);/*highlighter;*/}
if(x1>603 &&x1<621 &&y1>60 &&y1<80 && button==1){textbackground(4);/*highlighter;*/}
if(x1>621 &&x1<639 &&y1>60 &&y1<80 && button==1){textbackground(5);/*highlighter;*/}

if(x1>600 &&x1<639 &&y1>0 &&y1<20 && button==1)
	{
	closegraph();
	restorecrtmode();
	exit(1);
	}

}
}


initmouse()
 {
 i.x.ax=0;
 int86(0x33,&i,&o);
 return(o.x.ax);
 }

void showmouseptr()
{
i.x.ax=1;
int86(0x33,&i,&o);
}


void getmousepos(int *button,int *x,int *y)
{
i.x.ax=3;
int86(0x33,&i,&o);
*button=o.x.bx;
*x=o.x.cx;
*y=o.x.dx;
}

//to open a file
open()
{
char ch;
char name[20];
cleardevice();
closegraph();
printf("enter file name or address");
gets(name);
FILE *fptr;
first();
fptr=fopen(name,"r");
int n=0;
while((ch=getc(fptr))!=EOF)
 {
   str[n]=ch;
   n++;
 }
 setcolor(BLUE);
 moveto(10,100);
 outtext("abc");
 outtext(str);

fclose(fptr);
return(0);
}

//to save a file in test.txt
save()
{
FILE *fptr;
char ch;
fptr=fopen("test.txt","w");
for(int n=0;n<strlen(str);n++)
{
   ch=str[n];
   fprintf(fptr,"%c",ch);
}
fclose(fptr);
return(0);
}

//save as functon
save_as()
{
char ch;
char name[20];

cleardevice();
closegraph();
printf("enter file name or address");
gets(name);
FILE *fptr;
fptr=fopen(name,"w");
for(int n=0;n<strlen(str);n++)
{
   ch=str[n];
   fprintf(fptr,"%c",ch);
}
fclose(fptr);
first();
moveto(10,100);
outtext(str);
return(0);
}

//opens a new file on window
new_file()
{
clrscr();
cleardevice();
first();
return(0);
}


//loadinggggg
ssaver()
{
    /* request auto detection*/
    int gdriver = DETECT, gmode, errorcode;
    int maxx, maxy,midx,midy,left,right,top,bottom;

    /* initialize graphics, local variables*/

    initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

    /* read result of initialization   */
    errorcode = graphresult();

    if (errorcode != grOk)
    /* an error occurred  */
    {
       printf("Graphics error: %s\n", grapherrormsg(errorcode));
       printf("Press any key to halt:");
       getch();
       exit(1);
       /* terminate with an error code    */
    }

    setcolor(RED);
    rectangle(5,5,getmaxx()-5,getmaxy()-5);

    setcolor(8);
    setbkcolor(15);
    settextstyle(DEFAULT_FONT,HORIZ_DIR,4);
    moveto(45,40);
    outtext("THE TEXT EDITOR");
    moveto(175,420);
    outtext("LOADING");
    left=getmaxx()/2;
    top=getmaxy()/2;
    right=getmaxx()/2;
    bottom=getmaxy()/2;
    rectangle(left,top,right,bottom);
    delay(500);
    //cleardevice();
  int n=1;
  while(right<getmaxx()-20&&bottom<getmaxy()-10)
  { if(n!=15)
    {
    setcolor(n);
    left=left-20;
    top=top-10;
    right=right+20;
    bottom=bottom+10;
    rectangle(left,top,right,bottom);
    delay(500);
    //cleardevice();
    }
    n++;
  }

  return(0);

}
3
Contributors
8
Replies
10
Views
5 Years
Discussion Span
Last Post by WaltP
0

Standard C cannot do what you want. Input is only accepted using the ENTER key. You have to go into non-standard specialized code that most compilers do not contain.

0

Standard C cannot do what you want. Input is only accepted using the ENTER key. You have to go into non-standard specialized code that most compilers do not contain.

i was using a logic that if a user enter a right arrow key then moveto(x+5,y)
is that right??:-/

0

You have to go into non-standard specialized code that most compilers do not contain.

You say that as if the code isn't already completely non-standard and clearly based on libraries supported by Turbo C. Just say "use getch()" and be done with it, since this is a time when getch() is warranted. :icon_rolleyes:

0

You say that as if the code isn't already completely non-standard and clearly based on libraries supported by Turbo C. Just say "use getch()" and be done with it, since this is a time when getch() is warranted. :icon_rolleyes:

can you please explain more clearly!!!!!!!
thanks to all for your attention

0

look i am using getch to input and all other chars are working but enter and delete keys are not working.

This doesn't change my answer.

0

You say that as if the code isn't already completely non-standard and clearly based on libraries supported by Turbo C. Just say "use getch()" and be done with it, since this is a time when getch() is warranted. :icon_rolleyes:

Didn't look at the code closely enough (if at all).

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.