![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Лістинг модуля MENYS.H
#include <graphics.h> #include <string.h> #include "wind.h" #include "edits.h" #include "calc.h" #include <stdlib.h>
//--- // =0 если клавиши подняты // =2 или на уровне панели const Flat=2; const coloron=10; const coloroff=1; const colordn=14; const colorhead=1; //----
int OnPMenu=0, MenN2=0; float Tt=-1000, Ttn=-1000;// значення температури яку вводять double FLTt,FNTt1,FNTt2;
char string[25],sd[25]; float E; FILE *in;
const colorsel=10; const colornotsel=1; const ButtonColor=7;
const ButtonN=5;
const Meny1=2; const Meny2=2; const Meny3=3; const Meny4=0; const Meny5=0; const Meny6=0;
const PMeny1=2; const PMeny2=2;
int BoolMeny1=0; int BoolMeny2=0; int BoolMeny3=0; int BoolMeny4=0; int BoolMeny5=0; int BoolMeny6=0;
int BoolPMeny1=0; int BoolPMeny2=0;
void DoSome(int i); void windows(int x,int y,int xx,int yy,int color,char s[100],int p);
class TButton { public: TButton(); //Конструктор ~TButton(){}; //деструктор
virtual void Draw(); void setwidth(int x){width=x;}; void setheight(int x){height=x;}; void settop(int x){top=x;}; void setleft(int x){left=x;}; virtual void setonoff(int x){onoff=x;Draw();}; void setcol(int x){color=x;}; void setcapt(char *x){caption=x;};
int getwidth()const {return width;}; int getheight()const {return height;}; int gettop()const {return top;}; int getleft()const {return left;}; int getonoff()const {return onoff;}; int getcol()const {return color;}; const char* getcapt(){return caption;};
virtual void mousemove(int i);
virtual void setpos(int x,int y, char* capt,int i=0);
protected: int width; int height; int top; int left; int onoff; int color; char *caption; };
class TMeny:public TButton { public: TMeny(); ~TMeny(){};
virtual void Draw(); virtual void setonoff(int x) { onoff=x; if (!onoff) color=colornotsel; else color=colorsel; Draw(); };
virtual void mousemove(int i);
virtual void setpos(int x,int y, char* capt,int i=0); virtual void close(int p=0);
}; void DrowMenyAll(TMeny FirstMeny[],int FMeny, int p=0); //////////////////////////////////////////////////////////////////////////////
//ОБЪЯВЛЕНИЕ ОБЪЕКТОВ
/////////////////////////////////////////////////////////////////////////////////////////// TButton button[ButtonN]; TMeny FMeny1[Meny1],FMeny2[Meny2],FMeny3[Meny3], FPMeny2[PMeny2],FPMeny1[PMeny1]; //////////////////////////////////////////////////////////////////////////////////////////
void TMeny::close(int p) { if (!p) { setonoff(0); mouseoff(); putimage(xy1-2,yy1-2, arrow, 0); mouseon(); free(arrow); } else { setonoff(0); mouseoff(); putimage(xy1p-2,yy1p-2, arrowp, 0); mouseon(); free(arrowp); }
} void TMeny::mousemove(int i) { if (mousein(left,top,left+width,top+height)) { if (!getbutton(1)) { //Не нажата if (!onoff) setonoff(1); if ((BoolMeny2)&&(!OnPMenu)) switch (i) { case 0:
if (BoolPMeny2) { FPMeny2[0].close(1); BoolPMeny2=0; } if (!BoolPMeny1) { DrowMenyAll(FPMeny1,PMeny1,1); BoolPMeny1=1; } break; case 1: if (BoolPMeny1) { FPMeny1[0].close(1); BoolPMeny1=0; }
if (!BoolPMeny2) { DrowMenyAll(FPMeny2,PMeny2,1); BoolPMeny2=1; } break; } } else { if ((onoff)&&(!(MenN2))) { //Нажата
close(OnPMenu);
if (BoolPMeny1) {
if (BoolMeny2) FMeny2[0].close(); DoSome(i+100); } else if (BoolPMeny2) { if (BoolMeny2) FMeny2[0].close(); DoSome(i+110); } else if (BoolMeny1) DoSome(i+20); else if (BoolMeny2) DoSome(i+30);else if (BoolMeny3) DoSome(i+40);else if (BoolMeny4) DoSome(i+50);else if (BoolMeny5) DoSome(i+60);else if (BoolMeny6) DoSome(i+70);
BoolPMeny1=0; BoolPMeny2=0;
BoolMeny1=0; BoolMeny2=0; BoolMeny3=0; BoolMeny4=0; BoolMeny5=0; BoolMeny6=0; } } } else if ((getbutton(1))&&(!OnPMenu)&&(!MenN2)) { if (!mousein(xy1,yy1,xy2+6,yy2+yy1+4)) { close(OnPMenu);
if (BoolPMeny1) { FPMeny1[0].close(1); BoolPMeny1=0; }
if (BoolPMeny2) { FPMeny2[0].close(1); BoolPMeny2=0; } BoolMeny1=0; BoolMeny2=0; BoolMeny3=0; BoolMeny4=0; BoolMeny5=0; BoolMeny6=0;
BoolPMeny1=0; BoolPMeny2=0;
} } else if (onoff) setonoff(0); }
void TMeny::setpos(int x,int y, char* capt,int i) { left=x; top=y; caption=capt; if (i) Draw(); }
void TMeny::Draw()// Метод постройки кнопок------------ { int i; setfillstyle(1,7); setlinestyle(0,0,0); setcolor(color); mouseoff(); bar(left,top,left+width,top+height);
moveto(5+left,5+top); outtext(caption);
if (color==colornotsel) setcolor(7); rectangle(left,top,left+width,top+height); rectangle(left+2,top+2,left+width-2,top+height-2);
mouseon(); } // Метод постройки кнопок--------------------------------
TMeny::TMeny() { caption='\0'; width=180; height=18; top=0; left=0; color=colornotsel; onoff=0; }
void DrowMenyAll(TMeny FirstMeny[],int FMeny, int p) { if (!p) { xy1=FirstMeny[0].getleft()-4; yy1=FirstMeny[0].gettop()-4; xy2=FirstMeny[0].getleft()+FirstMeny[0].getwidth(); yy2=FirstMeny[FMeny-1].gettop()-FirstMeny[0].gettop()+FirstMeny[0].getheight()+8;
size = imagesize(xy1-2, yy1-2, xy2+6, yy1+yy2+4); arrow = malloc(size); mouseoff(); getimage(xy1-2, yy1-2, xy2+6, yy1+yy2+4, arrow); int dx=(xy2-xy1+4)/5; int dy=(yy2+2)/5; for (int k=1;k<=5; k++) { windows(xy1,yy1,dx*k,dy*k,7,"",0); delay(30); } mouseon(); windows(xy1,yy1,xy2-xy1+4,yy2+2,7,"",0); windows(xy1+2,yy1+2,xy2-xy1,yy2-2,7,"",1); for (int gg=0;gg<FMeny;gg++) { FirstMeny[gg].Draw(); } } else { xy1p=FirstMeny[0].getleft()-4; yy1p=FirstMeny[0].gettop()-4; xy2p=FirstMeny[0].getleft()+FirstMeny[0].getwidth(); yy2p=FirstMeny[FMeny-1].gettop()-FirstMeny[0].gettop()+FirstMeny[0].getheight()+8;
sizep = imagesize(xy1p-2, yy1p-2, xy2p+6, yy1p+yy2p+4); arrowp = malloc(sizep); mouseoff(); getimage(xy1p-2, yy1p-2, xy2p+6, yy1p+yy2p+4, arrowp); int dx=(xy2p-xy1p+4)/5; int dy=(yy2p+2)/5; for (int k=1;k<=5; k++) { windows(xy1p,yy1p,dx*k,dy*k,7,"",0); delay(30); } mouseon(); windows(xy1p,yy1p,xy2p-xy1p+4,yy2p+2,7,"",0); windows(xy1p+2,yy1p+2,xy2p-xy1p,yy2p-2,7,"",1); for (int gg=0;gg<FMeny;gg++) { FirstMeny[gg].Draw(); } } }
void mysound() { sound(1000); delay(30); nosound(); } void messageabout() { mysound(); size=imagesize(199,99,200+241,241); arrow=malloc(size); getimage(199,99,200+241,241,arrow); mouseon(); windows(200,100,240,140,7,"",0); windows(202,102,236,15,colorhead,"Про програму",1); setcolor(11); mouseoff(); outtextxy(230,130," КУРСОВА РОБОТА "); outtextxy(230,150," "); outtextxy(230,170," iнтерполяцiя по"); outtextxy(230,190," Лагранжу i Ньютону "); outtextxy(230,210,""); mouseon(); while (getbutton(1)); while ((!getbutton(1))&&(!kbhit())); mouseoff(); putimage(199,99,arrow,0); mouseon(); free(arrow); while (kbhit()) getch(); } void messageaboutavt() { mysound(); size=imagesize(199,99,200+241,241); arrow=malloc(size); getimage(199,99,200+241,241,arrow); mouseon(); windows(200,100,240,140,7,"",0); windows(202,102,236,15,colorhead,"Про автора",1); setcolor(11); mouseoff(); outtextxy(230,130," КУРСОВА РОБОТА "); outtextxy(230,150," Програму написав "); outtextxy(230,170," "); outtextxy(230,190," ст.гр.5AC-02 "); outtextxy(230,210," Гега А.М."); mouseon(); while (getbutton(1)); while ((!getbutton(1))&&(!kbhit())); mouseoff(); putimage(199,99,arrow,0); mouseon(); free(arrow); while (kbhit()) getch(); }
void TButton::mousemove(int i) { if (mousein(left,top,left+width,top+height)) { if (getbutton(1)) { if (onoff!=1) setonoff(1); } else if (onoff==1) { setonoff(0); DoSome(i); } else { if (onoff!=Flat) setonoff(Flat); } }else if (onoff!=0) setonoff(0); }
void TButton::setpos(int x,int y, char* capt,int i) { left=x; top=y; caption=capt; Draw(); }
TButton::TButton() { caption='\0'; width=100; height=18; top=0; left=0; color=ButtonColor; onoff=0; } void TButton::Draw()// Метод постройки кнопок------------ { int i=onoff; setfillstyle(1,color); setlinestyle(0,0,0); mouseoff();
bar(left,top,left+width,top+height); setcolor(1);
switch (i) { case 0:setcolor(coloroff);break; case 1:setcolor(colordn);break; case 2:setcolor(coloron);break; } rectangle(left,top,left+width,top+height); rectangle(left+2,top+2,left+width-2,top+height-2);
switch (i) { case 0:moveto(5+left,5+top);break; case 1:moveto(6+left,6+top);break; case 2:moveto(5+left,5+top);break; } if ((!Flat)&&(!i)) moveto(5+left,5+top); outtext(caption); mouseon(); } // Метод постройки кнопок--------------------------------
void grinit()//---Инициал графики---------------------------- { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, ""); errorcode = graphresult(); if (errorcode!= grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } mouseinit(); mouseon(); }//_void grinit()//-----------------------------------------------
void getcurcorpos() { int i;
if (BoolMeny1) for (i=0; i<Meny1; i++) { if (BoolMeny1) FMeny1[i].mousemove(i); }//===================================
MenN2=1; if (BoolMeny2) for (i=0; i<Meny2; i++) { if (BoolMeny2) FMeny2[i].mousemove(i); }//==================================== MenN2=0;
if (BoolMeny3) for (i=0; i<Meny3; i++) { if (BoolMeny3) FMeny3[i].mousemove(i); }//====================================
OnPMenu=1; if (BoolPMeny1) for (i=0; i<PMeny1; i++) { if (BoolPMeny1) FPMeny1[i].mousemove(i); }//===================================
if (BoolPMeny2) for (i=0; i<PMeny2; i++) { if (BoolPMeny2) FPMeny2[i].mousemove(i); }//==================================== OnPMenu=0;
for (i=0; i<ButtonN; i++) { button[i].mousemove(i); }//======================================= }
/////////////////////////////////////////////////////////////////// //---------------------------------------------------------------- //----------------------------------------------------------------- void init() { mouseoff(); cleardevice(); mouseon(); windows(1,1,637,477,7,"",0); // windows(1,25,637,27,7,"",0); windows(3,50,630,406,7,"",1); windows(3,3,633,20,colorhead,"Iнтерполяцiя по Лагранжу та Ньютону",1); // windows(1+2,20+2,637-3,27-4,7,"",1); windows(3,460,630,17,7,"",1);
button[0].setwidth(18); button[0].setheight(18); button[0].setpos(615,4,"X"); button[1].setpos(5,28," Довiдка"); button[2].setpos(110,28,"Тестування"); button[3].setpos(215,28,"Результати"); button[4].setpos(320,28," Вихiд");
int h;
for (h=0;h<Meny1;h++) FMeny1[h].setwidth(150);
FMeny1[0].setpos(10,53,"Про автора"); FMeny1[1].setpos(10,53+19,"Про програму");
for (h=0;h<Meny2;h++) FMeny2[h].setwidth(100); FMeny2[0].setpos(115,53, "Тест 1 >"); FMeny2[1].setpos(115,53+19,"Тест 2 >");
for (h=0;h<Meny3;h++) FMeny3[h].setwidth(100); FMeny3[0].setpos(220,53,"В файл"); FMeny3[1].setpos(220,53+19,"На екран"); FMeny3[2].setpos(220,53+19+19,"На друк");
for (h=0;h<PMeny1;h++) FPMeny1[h].setwidth(100); FPMeny1[0].setpos(227,57,"По Лагранжу"); FPMeny1[1].setpos(227,57+19,"По Ньютону");
for (h=0;h<PMeny2;h++) FPMeny2[h].setwidth(100); FPMeny2[0].setpos(227,57+19,"По Лагранжу"); FPMeny2[1].setpos(227,57+19+19,"По Ньютону");
}
///////////////////////////////////////////////////////////////////////
void DoSome(int i) { switch (i) { case 0: closegraph();exit(1); break; case 1: DrowMenyAll(FMeny1,Meny1,0); BoolMeny1=1; break; case 2: DrowMenyAll(FMeny2,Meny2,0); BoolMeny2=1; break;
case 3:DrowMenyAll(FMeny3,Meny3,0); BoolMeny3=1;break;
case 4: closegraph();exit(0); break; /////////////////////// case 20:messageaboutavt();break; case 21:messageabout();;break; case 22:;break; case 23:;break; //////////////////////// /////////////////////// case 30:;break; case 31:break; case 32:;break; case 33:;break; case 34:windows(3,50,630,406,7,"",1);break;
case 40: /* int dy=30,dx=20; for (int i=0;i<110;i++) { putpixel(i+dx,dy*IntLang(i)+120,4);
putpixel(i+dx,dy*IntNuton1(i)+120,2);
putpixel(i+dx,dy*IntNuton2(i)+120,1);
if ((i%20)==0) { setcolor(4); circle(i+dx,dy*IntLang(i)+120,2); setcolor(2); circle(i+dx,dy*IntNuton1(i)+120,2); setcolor(1); circle(i+dx,dy*IntNuton2(i)+120,2); } } */
edit1[0].setpos(200,200,"Введiть файл",""); EditEnter(edit1,FEdit1); if (exittru==27) break;
if ((in = fopen(edit1[0].gettext(), "wt")) == NULL) { fprintf(stderr, "Cannot open input file.\n"); break; }
fprintf(in,"Результати роботи\n");
if (Tt!=-1000) { fprintf(in," Iнтерполяцiя по Лагранжу\n"); fprintf(in,"T=%10.5f\n",Tt); fprintf(in,"Q=%10.5f\n",FLTt); E=fabs(FLTt/6006); fprintf(in,"e=%10.5f\n",E); }
if (Ttn!=-1000) {
fprintf(in," Iнтерполяцiя по Ньютону\n"); fprintf(in,"T=%10.5f\n",Ttn); fprintf(in,"Q=%10.5f\n",FNTt1); E=fabs(FNTt1-IntLang(Ttn)); fprintf(in,"e=%10.5f\n",E); } fclose(in); break; case 41: windows(3,50,630,406,7,"",1); setcolor(4); mouseoff(); outtextxy(240,80,"Результати роботи");
if (Tt!=-1000) {
setcolor(1); outtextxy(50,150," Iнтерполяцiя по Лагранжу");
sprintf(sd,"T=%10.5f",Tt); outtextxy(40,170,sd);
sprintf(sd,"Q=%10.5f",FLTt); outtextxy(40,190,sd);
E=fabs(FLTt/6006);
sprintf(sd,"e=%10.5f",E); outtextxy(40,210,sd); } if (Ttn!=-1000) {
setcolor(1); outtextxy(50,250," Iнтерполяцiя по Ньютону");
sprintf(sd,"T=%10.5f",Ttn); outtextxy(40,270,sd);
sprintf(sd,"Q=%10.5f",FNTt1); outtextxy(40,290,sd);
E=fabs(FNTt1-IntLang(Ttn));
sprintf(sd,"e=%10.5f",E); outtextxy(40,310,sd); } mouseon(); break;
case 42: fprintf(stdprn,"Rezult\r\n");
if (Tt!=-1000) { fprintf(stdprn," Interpol LAGRANG\r\n"); fprintf(stdprn,"T=%10.5f\r\n",Tt); fprintf(stdprn,"Q=%10.5f\r\n",FLTt); E=fabs(FLTt/6006); fprintf(stdprn,"e=%10.5f\r\n",E); }
if (Ttn!=-1000) {
fprintf(stdprn," Interpol NUTON\r\n"); fprintf(stdprn,"T=%10.5f\r\n",Ttn); fprintf(stdprn,"Q=%10.5f\r\n",FNTt1); E=fabs(FNTt1-IntLang(Ttn)); fprintf(stdprn,"e=%10.5f\r\n",E); } fprintf(stdprn, "\f"); break;
case 100:; case 110: edit1[0].setpos(200,200,"Введiть t (по Лагр.)",""); EditEnter(edit1,FEdit1); if (exittru==27) break;
Tt=atof(edit1[0].gettext()); FLTt=IntLang(Tt); //printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2); break; case 101:; case 111: edit1[0].setpos(200,200,"Введiть t (по Ньютону)",""); EditEnter(edit1,FEdit1);
if (exittru==27) break;
Ttn=atof(edit1[0].gettext()); //FLTt=IntLang(Ttn); if (Ttn<50) FNTt1=IntNuton1(Ttn); else FNTt1=IntNuton2(Ttn); //printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2); break; /////////////////////// } } Date: 2015-09-18; view: 343; Нарушение авторских прав |