buttonon(305,120+((a/2)*30),400,120+25+((a/2)*30),"Imager",2);
ba(305,120+((a/2)*30),400,120+25+((a/2)*30),37+a+1);
}
int lb=0;char *t[]={"1","2","3","4","5","6","7","8","9","10"};
settextstyle(2,0,4);
for(a=205;a<=355;a+=16)
{
/*t='9'-(char)lb;
outtextxy(a+12,330,t);*/
buttonon(a,330,a+15,345,t[lb],2);
ba(a,330,a+15,345,48+lb+1);
lb++;
}
m.showmouseptr();
loop(37,58);
loopmain=1;
fontwc=0;
m.hidemouseptr();
back(200,100,405,350,1);
m.showmouseptr();
}
void aboutwindow()
{ m.hidemouseptr();
back(200,100,450,200,0);
openwindow(200,100,450,200,title,1,4,0,7,0);
settextstyle(2,HORIZ_DIR,4);
setcolor(14);
outtextxy(205,115,"Imager 3.1");
outtextxy(205,130," Made by Ankit Rohatgi");
outtextxy(205,145," www.ankitrohatgi.com");
m.showmouseptr();
m.getmousepos(button,x,y);
while(button==0)
{ m.getmousepos(button,x,y);
}
m.hidemouseptr();
back(200,100,450,200,1);
m.showmouseptr();
}
void toolset(int no)
{ m.hidemouseptr();
for(int cnt=50;cnt<=300;cnt+=20)
{ buttoneffect(5,cnt,45,cnt+15);
buttoneffect(50,cnt,95,cnt+15);
}
buttoneffect(5,20,35,35);
buttoneffect(40,20,70,35);
buttoneffect(75,20,105,35);
buttoneffect(110,20,145,35);
buttonclick(buttons[no][0],buttons[no][1],buttons[no][2],buttons[no][3]);
m.showmouseptr();
}
void lift(int no)
{ m.hidemouseptr();
buttoneffect(buttons[no][0],buttons[no][1],buttons[no][2],buttons[no][3]);
m.showmouseptr();
}
void invertcolors()
{ int cl;
for(int a=100;a<=635;a++)
{ for(int b=50;b<=450;b++)
{ cl=getpixel(a,b);
putpixel(a,b,15-cl);
}
}
}
void fliphorizontal()
{ int c1,c2;
for(int a=0;a<=267;a++)
{ for(int b=50;b<=450;b++)
{ c1=getpixel(101+a,b);
c2=getpixel(634-a,b);
putpixel(101+a,b,c2);
putpixel(634-a,b,c1);
}
}
}
void flipvertical()
{ int c1,c2;
for(int b=0;b<=200;b++)
{ for(int a=100;a<=635;a++)
{ c1=getpixel(a,50+b);
c2=getpixel(a,450-b);
putpixel(a,50+b,c2);
putpixel(a,450-b,c1);
}
}
}
void filemenu()
{ char *filem[]={"New","Open","Save","Save As","Exit"};
m.hidemouseptr();
back(5,40,70,140,0);
menu(5,40,filem,5,7);
m.showmouseptr();
m.getmousepos(button,x,y);
int lc=1,mc=0;
while((x>5)&&(y>20)&&(x<60)&&(y<140)&&(lc==1))
{ m.getmousepos(button,x,y);
if(button==1)
{ if((y>40)&&(y<55)) { setfillstyle(1,15);bar(100,50,635,450);lc=0;
savename="tempo.dat";}
else if((y>55)&&(y<75))
{lc=0;mc=1;
m.hidemouseptr();
back(5,40,70,140,1);lift(1);
m.showmouseptr();
textgetter("Open-filename");
if(yotext[0]=='\0') {goto bop;}
loadimage(100,50,yotext);
/*BMPload(100,50,yotext);*/
savename=yotext;
bop:
}
else if((y>75)&&(y<90))
{ lc=0;mc=1;
m.hidemouseptr();
back(5,40,70,140,1);lift(1);
m.showmouseptr();
saveimage(100,50,635,450,savename);
/*BMPsave(100,50,635,450,savename);*/
}
else if((y>90)&&(y<105))
{ lc=0;mc=1;
m.hidemouseptr();
back(5,40,70,140,1);lift(1);
m.showmouseptr();
textgetter("Save As-filename");
if(yotext[0]=='\0') {goto bosa;}
saveimage(100,50,635,450,yotext);
/*BMPsave(100,50,635,450,yotext);*/
savename=yotext;
bosa:
}
else if((y>105)&&(y<120)) {closegraph();exit(1);}
}
}
if(mc==0) {
m.hidemouseptr();
back(5,40,70,140,1);lift(1);
m.showmouseptr();}
}
void editmenu()
{ char *editm[]={"Cut","Copy","Paste"};
m.hidemouseptr();
back(40,35,85,90,0);
menu(40,35,editm,3,5);
m.showmouseptr();
m.getmousepos(button,x,y);
int lc=1;
delay(50);
while((x>40)&&(y>20)&&(x<85)&&(y<90)&&(lc==1))
{ m.getmousepos(button,x,y);
if(button==1)
{ if((y>40)&&(y<55)) {cut();lc=0;}
else if((y>55)&&(y<70)) {copy();lc=0;}
else if((y>70)&&(y<85)) {paste();lc=0;}
}
}
m.hidemouseptr();
back(40,35,85,90,1);
lift(2);
m.showmouseptr();
}
void cut()
{ setfillstyle(1,15);bar(select[0],select[1],select[2],select[3]);lift(13);
}
void copy()
{
backtotal(select[0],select[1],select[2],select[3],0);lift(14);
}
void paste()
{ backtotal(select[0],select[1],select[2],select[3],1);lift(15);
}
void backtotal(int x1,int y1,int x2,int y2,int mode)
{ int ch,width,height;char c2;
if(mode==0)
{
ofstream outfile("ccp.dat");
outfile<<x2-x1<<endl<<y2-y1<<endl;
for(int a=x1;a<=x2;a++)
{ for(int b=y1;b<=y2;b++)
{ ch=getpixel(a,b);
outfile<<(char)(ch+28);
}
}
outfile.close();
}
else if(mode==1)
{
setviewport(100,50,635,450,1);
ifstream infile("ccp.dat");
infile>>width>>height;
for(int a=0;a<=width;a++)
{ for(int b=0;b<=height;b++)
{ infile.get(c2);ch=(int)c2;
putpixel(a+x1-100,b+y1-50,ch-28);
}
}
infile.close();
setviewport(0,0,639,479,1);
}
}
void textgetter(char quest[])
{
m.hidemouseptr();
back(150,100,400,150,0);
openwindow(150,100,400,150,quest,1);
textfield(155,118,30);
m.showmouseptr();
setcolor(0);
settextstyle(2,0,4);
int xcn=0;int in2=0;
char in[2];
in[1]='\0'; /*textcolor(4);gotoxy(23,9);gets(yotext);*/
while(*in!=(char)13)
{ st:
in[0]=getch();
if(in[0]==(char)13)
{ break;
}
else if(in[0]==(char)8) {in2-=6;xcn--;sound(900);nosound();setfillstyle(1,15);bar(158+in2,120,158+in2+textwidth("W"),120+textheight("Wg"));goto st;}
setfillstyle(1,15);bar(158+in2,120,158+in2+textwidth(in),120+textheight(in));
if(in2<=0) {in2=0;}
if(in2>=240) {in2=240;}
outtextxy(158+in2,120,in);
in2+=6;
yotext[xcn]=in[0];
xcn++;
}
yotext[xcn]='\0';
/*cout<<yotext;*/
m.hidemouseptr();
back(150,100,400,150,1);
m.showmouseptr();
}
void saveimage(int x1,int y1,int x2,int y2,char filename[])
{ int ch,width,height;char c2;
ofstream outfile(filename);
outfile<<x2-x1<<endl<<y2-y1<<endl;
for(int a=x1;a<=x2;a++)
{ for(int b=y1;b<=y2;b++)
{ ch=getpixel(a,b);
outfile<<(char)(ch+28);
}
}
outfile.close();
}
void loadimage(int x1,int y1,char filename[])
{
char c2;int width,height,ch;
ifstream infile(filename);
if(infile)
{
setviewport(100,50,635,450,1);
infile>>width>>height;
for(int a=0;a<=width;a++)
{ for(int b=0;b<=height;b++)
{ infile.get(c2);ch=(int)c2;
putpixel(a+x1-100,b+y1-50,ch-28);
}
}
setviewport(0,0,639,479,1);
}
else { say("file not found");}
infile.close();
}
void changer(int col)
{ for(int a=100;a<=635;a++)
{ for(int b=50;b<=450;b++)
{ if(col==getpixel(a,b))
{ putpixel(a,b,icolor);
}
}
}
}
void say(char text[])
{ m.hidemouseptr();
settextstyle(2,0,4);
int width=textwidth(text)+20;
int height=60;
back(150,100,150+width,100+height,0);
openwindow(150,100,150+width,100+height,title);
setcolor(0);
buttonon(160,100+height-17,180,100+height-2,"OK",3);
setcolor(0);
outtextxy(160,120,text);
m.showmouseptr();
int lc=1;
while(lc==1)
{ m.getmousepos(button,x,y);
if((x>160)&&(x<180)&&(y>100+height-17)&&(y<100+height-2)&&(button==1))
{ lc=0;
}
}
m.hidemouseptr();
back(150,100,150+width,100+height,1);
m.showmouseptr();
delay(90);
}
Висновки
В роботі були проаналізовані питання відносно теоретичної основи побудови програм з простим інтерфейсом користувача а також проблеми, які виникають при цьому. Результатом цього є розроблений програмний комплекс для роботи з візитними картками (розробка, та адміністрування). Зауважимо лише, що при цьому використовувалися готові функції для роботи з графікою.
Програма відрізняється від існуючих на ринку простотою інтерфейсу і настроювань.
Література
[1]Касаткин А.И., Вальвачев А.Н. Профессиональное прогрпммирование на языке Си. Мн., 1992. 240 С.
[2]Нейбауэр А. Моя первая программа на С/С++. П., 1995. 368 С.
[3]Бруно Бабэ. Просто и ясно о Borland C++. М., 1996. 400 С.
[4]Шамас Н.К. Основы С++ и обьектно-ориентированного программирования. К., 1996. 448 С.
[5]Справочник по классам Borland C++ 4.0. К., 1994. 256 С.
[6]ObjectWindows для C++. К., 1993., 208 С.
[7]Том Сван. Программирование для Windows в Borland C++. М., 480 С.
[8]Н. Барканати. Программирование игр для Windows на Borland C++. М., 1994. 512 С.