Sunday 3 February 2013


Mouse programming in C:

#include<stdio.h>
#include<process.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
union REGS i,o;
int initmouse(void);
void showarrow(void);
void mousearea(int, int, int,int);
void m_pointerat(int *, int *, int *);
void main()
{
int gd=DETECT,gm,maxx,maxy,button,x,y;
clrscr();
initgraph(&gd,&gm,"");
maxx=getmaxx();
maxy=getmaxy();
rectangle(0,56,maxx,maxy);
setviewport(1,57,maxx-1,maxy-1,1);
gotoxy(26,1);
printf("mouse button pressed");


if(initmouse()==0)
{
closegraph();
restorecrtmode();
printf("\nmouse driver not found");
exit(1);
}
mousearea(0,100,maxx-50,maxy-10);
showarrow();
gotoxy(52,3);
printf("\nPress any key to exit");
while(!kbhit())
{
m_pointerat(&button,&x,&y);
gotoxy(5,3);
(button&1)==1?printf("LEFT"):printf("***");
gotoxy(20,3);
(button&2)==2?printf("RIGHT"):printf("****");
gotoxy(65,3);
printf("X=%03d,Y=%03d",x,y);
if(x==589&&y==100)
{
if((button&1)==1)
exit(1);
}
}
getch();
}


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


void showarrow()
{
i.x.ax=1;
int86(0x33,&i,&o);
}
void mousearea(int x1,int y1,int x2,int y2)
{
i.x.ax=7;
i.x.cx=x1;
i.x.dx=x2;
int86(0x33,&i,&o);
i.x.ax=8;
i.x.cx=y1;
i.x.dx=y2;
int86(0x33,&i,&o);
}
void m_pointerat(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;
}

Note: first copy EGAVGA.BGI in bin folder, then run it....!!!

No comments:

Post a Comment