该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
c语言写的鼠标点击后留下鼠标的残影,求高手的解决方案,多谢了。代码如下:
int x,y;
union REGS r;
void mouse()
{
int xmin,xmax,ymin,ymax;
setcolor(YELLOW);
xmin=2,xmax=638;
ymin=2,ymax=478;
setwritemode(XOR_PUT);
mouseinit(xmin,xmax,ymin,ymax);
x=200,y=200;
mouseshape(x,y);
}
void mouseinit(int x1,int x2,int y1,int y2)
{
r.x.ax=0;
int86(51,&r,&r);
if(r.x.ax==0)
{
printf("error!\n");
exit(1);
}
r.x.ax=7;
r.x.cx=x1;
r.x.dx=x2;
int86(51,&r,&r);
r.x.ax=8;
r.x.cx=y1;
r.x.dx=y2;
int86(51,&r,&r);
}
int mouseget(int *x1,int *y1,int *butt1)
{
int x01=*x1,y01=*y1,butt=0;
int xn,yn;
do
{
r.x.ax=3;
int86(51,&r,&r);
xn=r.x.cx;
yn=r.x.dx;
*butt1=r.x.bx;
}while(xn==x01&&yn==y01&&* butt1==butt);
*x1=xn;
*y1=yn;
if(*butt1)
{
return(-1);
}
else
{
return(1);
}
}
void mouseshape(int x1,int y1)
{
setcolor(MAGENTA);
setlinestyle(0,3,1);
line(x1,y1,x1+8,y1+2);
line(x1,y1,x1+7,y1+3);
line(x1,y1,x1+6,y1+2);
line(x1,y1,x1+4,y1+5);
line(x1,y1,x1+2,y1+6);
line(x1,y1,x1+8,y1+8);
}
void mousenewxy(int *x1,int *y1,int *butt1)
{
int xx0=*x1,yy0=*y1;
int x3,y3;
int ch=mouseget(&x3,&y3,butt1);
if(ch>0)
{
mouseshape(xx0,yy0);
mouseshape(x3,y3);
}
else
{
mouseshape(xx0,yy0);
mouseshape(x3,y3);
}
*x1=x3;
*y1=y3;
}