TC 2.0中实用鼠标的一个问题。
nasco 2000-07-28 08:53:00 我在用TC编写一个简单的游戏程序,其中需要判定鼠标左右的按键状态。我编写了如下函数:
void mouse_reset(void)
{
union REGS r;
r.x.ax=0;
int86(0x33,&r,&r);
if((int)r.x.ax!=-1)
{
printf("Please make sure you have installed mouse and the driver!");
exit(1);
}
}
void cursor_on(void)
{
union REGS r;
r.x.ax=1;
int86(0x33,&r,&r);
}
void cursor_off(void)
{
union REGS r;
r.x.ax=2;
int86(0x33,&r,&r);
}
int left_pressed()
{
union REGS r;
int c;
r.x.ax=3;
int86(0x33,&r,&r);
c=r.x.bx;
return c & 1;
}
int right_pressed()
{
union REGS r;
r.x.ax=3;
int86(0x33,&r,&r);
return r.x.bx & 2;
}
void mouse_position(int *x,int *y)
{
union REGS r;
r.x.ax=3;
int86(0x33,&r,&r);
*x=r.x.cx;
*y=r.x.dx;
}
其中right_pressed()和left_pressed()作为分别判断左右按键的函数,同时为了测试
我编写了一个简单的测试程序
main()
{
mouse_reset();
clrscr();
for(;;)
{
if(right_pressed())
{
printf("R");
}
if(left_pressed())
{
printf("L");
}
}
}
按照我的设想,应该是每按下一次左健或者右健输出一个"R"或者"L",但是一次会输出几百个...也就是IF语句几百次被判断成真。程序的问题出在什么地方?
大家一定帮助小弟解决这个问题,先谢过了!
:)