#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
union REGS i,o;
char *dbox,*yes_up,*no_up,*yes_down,*no_down,*icon;
void DrawDialogBox(void);
void DialogBox(void);
int initmouse(void);
void showmouseptr(void);
void hidemouseptr(void);
void getmousepos(int *button,int *x,int *y);
void main(void)
{
int
gdriver=DETECT,gmode,errorcode;
initgraph(&gdriver,
&gmode, "..//bgi");
errorcode=graphresult();
if(errorcode!=grOk)
{
printf("Graphics
not initialized");
printf("Error
Status : %s",grapherrormsg(errorcode));
getche();
exit(1);
}
if(!initmouse())
{
printf("Mouse
driver can't be loaded");
getche();
exit(1);
}
DrawDialogBox();
showmouseptr();
setbkcolor(BROWN);
DialogBox();
}
void DrawDialogBox(void)
// actual drawing of dialog box
{
int
area;
int
poly[10];
struct
textsettingstype textinfo;
gettextsettings(&textinfo);
settextstyle(0,HORIZ_DIR,1);
setfillstyle(1,BLUE);
bar(200,160,400,235);
setcolor(7);
outtextxy(205,163,"Message"); //title bar
setfillstyle(1,7);
bar(200,175,400,250);
bar(388,162,398,172);
setcolor(WHITE);
line(388,162,398,162);
line(388,162,388,172);
setcolor(5);
line(388,172,398,172);
line(398,162,398,172);
setcolor(7);
setcolor(8);
outtextxy(390,164,"X"); //close button
outtextxy(260,190," Exit ?"); //message
setcolor(WHITE);
line(200,160,400,160);
line(200,160,200,250);
setcolor(8); //outside normal look
line(400,160,400,250);
line(200,250,400,250);
setfillstyle(1,BLUE);
outtextxy(243,223,"Yes"); //button text
outtextxy(337,223,"No");
setcolor(LIGHTBLUE);
setcolor(WHITE);
line(230,215,280,215);
line(230,215,230,238);
line(320,215,370,215);
line(320,215,320,238);
setcolor(8);
line(280,215,280,238);
line(230,238,280,238);
line(370,215,370,238);
line(320,238,370,238);
poly[0]
= 100;
poly[1]
= 100;
poly[2]
= 90;
poly[3]
= 122;
poly[4]
= 110;
poly[5]
= 122;
poly[6]
= poly[0];
poly[7]
= poly[1];
setcolor(YELLOW);
setfillstyle(1,7);
bar(89,99,111,123);
setfillstyle(1,YELLOW);
fillpoly(4,
poly);
setcolor(8);
settextstyle(4,0,1);
outtextxy(98,100,"!");
setcolor(WHITE);
area=imagesize(89,99,111,123);
icon=malloc(area);
getimage(89,99,111,123,icon);
putimage(89,99,icon,XOR_PUT);
putimage(210,180,icon,COPY_PUT);
setfillstyle(1,BLUE);
settextstyle(0,HORIZ_DIR,1);
setcolor(WHITE);
area=imagesize(198,158,402,252);
dbox=malloc(area);
getimage(198,158,402,252,dbox);
putimage(198,158,dbox,XOR_PUT);
putimage(198,158,dbox,XOR_PUT);
area=imagesize(230,215,280,238);
yes_up=malloc(area);
getimage(230,215,280,238,yes_up);
putimage(230,215,yes_up,XOR_PUT);
putimage(230,215,yes_up,XOR_PUT);
area=imagesize(320,215,370,238);
no_up=malloc(area);
getimage(320,215,370,238,no_up);
putimage(320,215,no_up,XOR_PUT);
putimage(320,215,no_up,XOR_PUT);
setcolor(8);
line(230,215,280,215);
line(230,215,230,238);
line(320,215,370,215);
line(320,215,320,238);
setcolor(WHITE);
line(280,215,280,238);
line(230,238,280,238);
line(370,215,370,238);
line(320,238,370,238);
area=imagesize(230,215,280,238);
yes_down=malloc(area);
getimage(230,215,280,238,yes_down);
putimage(230,215,yes_down,XOR_PUT);
putimage(230,215,yes_down,XOR_PUT);
area=imagesize(320,215,370,238);
no_down=malloc(area);
getimage(320,215,370,238,no_down);
putimage(320,215,no_down,XOR_PUT);
putimage(320,215,no_down,XOR_PUT);
putimage(320,215,no_up,COPY_PUT);
putimage(230,215,yes_up,COPY_PUT);
settextstyle(textinfo.font,0,textinfo.charsize);
}
void DialogBox(void)
//Event Handler for dialog box
{
int
button,x,y,in1=0,in2=0;
struct
textsettingstype textinfo;
cleardevice();
putimage(198,158,dbox,XOR_PUT);
showmouseptr();
gettextsettings(&textinfo);
settextstyle(0,HORIZ_DIR,1);
while(1)
{
getmousepos(&button,&x,&y);
if(x>=388&&x<=398&&y>=162&&y<=172)
{
if((button&1)==1)
{
while((button&1)==1)
getmousepos(&button,&x,&y);
hidemouseptr(); //close button click
cleardevice();
settextstyle(textinfo.font,0,textinfo.charsize);
hidemouseptr();
cleardevice();
showmouseptr();
DialogBox();
break;
}
}
getmousepos(&button,&x,&y);
if(x>=230&&x<=280&&y>=215&&y<=238)
{
if((button&1)==1)
{
while((button&1)==1)
{
getmousepos(&button,&x,&y);
if(x>=230&&x<=280&&y>=215&&y<=238)
{
if(in1==1)
continue;
hidemouseptr();
putimage(230,215,yes_down,COPY_PUT);
showmouseptr();
in1=1;
} //yes
button click
else
{
if(in1==0)
continue;
hidemouseptr();
putimage(230,215,yes_up,COPY_PUT);
showmouseptr();
in1=0;
}
}
if(x>=230&&x<=280&&y>=215&&y<=238)
{
closegraph();
restorecrtmode();
exit(0);
}
}
}
if(x>=320&&x<=370&&y>=215&&y<=238)
{
if((button&1)==1)
{
while((button&1)==1)
{
getmousepos(&button,&x,&y);
if(x>=320&&x<=370&&y>=215&&y<=238)
{
if(in2==1)
continue;
hidemouseptr();
putimage(320,215,no_down,COPY_PUT);
showmouseptr();
in2=1;
}
else //no button click
{
if(in2==0)
continue;
hidemouseptr();
putimage(320,215,no_up,COPY_PUT);
showmouseptr();
in2=0;
}
}
getmousepos(&button,&x,&y);
if(x>=320&&x<=370&&y>=215&&y<=238)
{
hidemouseptr();
cleardevice();
settextstyle(textinfo.font,0,textinfo.charsize);
hidemouseptr();
cleardevice();
showmouseptr();
DialogBox();
}
}
}
}
}
// Mouse
Functions
int initmouse(void)
{
i.x.ax=0;
int86(0x33,&i,&o);
return
(o.x.ax);
}
void showmouseptr(void)
{
i.x.ax=1;
int86(0x33,&i,&o);
}
void hidemouseptr(void)
{
i.x.ax=2;
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;
}
Contact:
Mr. Roshan P. Helonde
Mobile: +91-7276355704
WhatsApp: +91-7276355704
Email: roshanphelonde@rediffmail.com