永发信息网

C语言鼠标问题

答案:1  悬赏:80  手机版
解决时间 2021-02-27 15:53
  • 提问者网友:咪咪
  • 2021-02-27 12:24
C语言鼠标问题
最佳答案
  • 五星知识达人网友:拾荒鲤
  • 2021-02-27 13:54
鼠标左键按下抬起输出一个坐标值

#include
#include
#include
union REGS r;
struct SREGS s;
int x=0,y=0;
unsigned int pattern[32]={ 0x3FFF,
0x1FFF,
0x0FFF,
0x07FF,
0x03FF,
0x01FF,
0x00FF,
0x007F,
0x003F,
0x001F,
0x01FF,
0x10FF,
0x30FF,
0xF87F,
0xF87F,
0xFC3F,

0x0000,
0x4000,
0x6000,
0x7000,
0x7800,
0x7C00,
0x7E00,
0x7F00,
0x7F80,
0x7FC0,
0x6C00,
0x4600,
0x0600,
0x0300,
0x0300,
0x0180,
};

setmouse(int xmi,int xma,int ymi,int yma);
mouseon();
mouseoff();
int readmouse(int *x,int *y);
graphmouse();
textmouse();

setmouse(int xmi,int xma,int ymi,int yma)
{ int retcode;
r.x.ax=0;
int86(51,&r,&r);
retcode=r.x.ax;
if(retcode==0) return 0;
r.x.ax=7;
r.x.cx=xmi;
r.x.dx=xma;
int86(51,&r,&r);
r.x.ax=8;
r.x.cx=ymi;
r.x.dx=yma;
int86(51,&r,&r);
return retcode;
}

mouseon()
{ r.x.ax=1;

int86x(0x33,&r,&r,&s);
}

mouseoff()
{ r.x.ax=2;

int86x(0x33,&r,&r,&s);
}

int readmouse(int *x,int *y)
{ int i=0,mb=0,xm,ym;
{i=0;
r.x.ax=3;
int86x(0x33,&r,&r,&s);
i=r.x.bx;
*x=r.x.cx;
*y=r.x.dx;
if(i!=0){ if(i==1) return 1;
if(i==2) return 2;
return 3;
}
}
return 0;
}

graphmouse()
{ r.x.ax=9;
r.x.bx=0,
r.x.cx=0,
r.x.dx=FP_OFF(pattern);
s.es=FP_SEG(pattern);
int86x(0x33,&r,&r,&s);
}

textmouse()
{ r.x.ax=10;

int86x(0x33,&r,&r,&s);
}

int main()
{ int i,j,x,y;clrscr();
setmouse(0,635,0,195);
mouseon();
textmouse();
i=0;
j=0;
for(;;)
{
i=readmouse(&x,&y);
if((i & 1)==1)
{
if (j == 0)
{
j = 1;
}
}
else
{
if (j == 1)
printf("(%d,%d)\n",x,y);
j = 0;
}
if((i & 2)==2)
{
exit(0);
}
}
}

修改的地方:

readmouse 去掉了while循环
main 里做了修改,左键按下抬起后输出一个坐标值
右键按下结束程序
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯