c语言无法捕捉鼠标信息,为什么不管我运行什么带有鼠标操纵的的程序都无法看到鼠标指针...

这是我从《C游戏编程从入门到精通》中找到的程序,关于鼠标的,完全可以直接运行,

(有几个警告,不过没有关系!)很好的,

改一改就完全可以用在自己的程序中了,不过我还有一部分没有搞懂!

#include

#include

#define MOUSE_INT 0x33

#define MOUSE_RESET 0x00

#define MOUSE_SHOW 0x01

#define MOUSE_HIDE 0x02

#define MOUSE_BUTT_POS 0x03

#define MOUSE_SET_SENSITIVITY 0x1A

#define MOUSE_MOTION_REL 0x0B

#define MOUSE_LEFT_BUTTON 0x01

#define MOUSE_RIGHT_BUTTON 0x02

#define MOUSE_CENTER_BUTTON 0x04

int Squeeze_Mouse(int command,int *x,int *y,int *buttons)

{

union REGS inregs,outregs;

switch(command)

{

case MOUSE_RESET:

{

inregs.x.ax=0x00;

int86(MOUSE_INT,&inregs,&outregs);

*buttons=outregs.x.bx;

return(outregs.x.ax);

}break;

case MOUSE_SHOW:

{

inregs.x.ax=0x01;

int86(MOUSE_INT,&inregs,&outregs);

return(1);

}break;

case MOUSE_HIDE:

{

inregs.x.ax=0x02;

int86(MOUSE_INT,&inregs,&outregs);

return(1);

}break;

case MOUSE_BUTT_POS:

{

inregs.x.ax=0x03;

int86(MOUSE_INT,&inregs,&outregs);

*x=outregs.x.cx;

*y=outregs.x.dx;

*buttons=outregs.x.bx;

return(1);

}break;

case MOUSE_MOTION_REL:

{

inregs.x.ax=0x03;

int86(MOUSE_INT,&inregs,&outregs);

*x=outregs.x.cx;

*y=outregs.x.dx;

return(1);

}break;

case MOUSE_SET_SENSITIVITY:

{

inregs.x.ax=0x04;

inregs.x.bx=*buttons;

inregs.x.cx=*x;

inregs.x.dx=*y;

int86(MOUSE_INT,&inregs,&outregs);

return(1);

}break;

default:break;

}

}

void main(void)

{

int xmouse,ymouse,btnmouse,done=0,old=0,i=0;

Squeeze_Mouse(MOUSE_RESET,0,0,0);

Squeeze_Mouse(MOUSE_SHOW,0,0,0);

while(done==0)

{

Squeeze_Mouse(MOUSE_BUTT_POS,&xmouse,&ymouse,&btnmouse);

if(btnmouse==1&&old!=1)

{

old=1;

Squeeze_Mouse(MOUSE_HIDE,0,0,0);

printf("x=%d,y=%d,button=%d\n",xmouse,ymouse,btnmouse);

Squeeze_Mouse(MOUSE_SHOW,0,0,0);

}

if(btnmouse==2&&old!=2)

{

old=2;

Squeeze_Mouse(MOUSE_HIDE,0,0,0);

printf("x=%d,y=%d,button=%d\n",xmouse,ymouse,btnmouse);

Squeeze_Mouse(MOUSE_SHOW,0,0,0);

}

i++;

if(i==5000)

{

old=0;

i=0;

}

if(kbhit())

done=1;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值