mouse.c

来自「操作系统的进程管理、设备管理、文件管理的动态演示(C版)」· C语言 代码 · 共 69 行

C
69
字号
/******************************** 鼠标操作函数 *************************************/
int Msinit()
{
   int recored;

   regs.x.ax=0;  /* 初始化鼠标*/
   int86(0x33,&regs,&regs);
   recored=regs.x.ax;
   if(recored==0)
   {  printf("Mouse not found !\n");
      getch();
      return 0;
   }
   regs. x. ax =  1;  /* 显示光标*/
   int86(0x33,&regs,&regs);
   return recored;
}

int Nomouse()
{
   regs. x. ax =  2;  /* 隐藏光标*/
   int86(0x33,&regs,&regs);
}

int Showmouse()
{
   regs. x. ax =  1;/* 显示光标*/
   int86(0x33,&regs,&regs);
}
int Msget(int *px,int *py,int *buttons)
{
   regs.x.ax=3;
   int86(0x33,&regs,&regs);
   *px=regs.x.cx;
   *py=regs.x.dx;
   *buttons=regs.x.bx;
}

int Msread(int *px,int *py,int *buttons)
{
   int    but_old=*buttons;
   int    x_old=*px,y_old=*py;
   struct time t;
   struct date d;/* 当前时间信息*/

   Showmouse();  
   do{
       if(kbhit())
       return bioskey(0);
       Msget(px,py,buttons);

   }while(*px==x_old&&*py==y_old&&*buttons==but_old);
   but_old=*buttons;
   x_old=*px;
   y_old=*py;
   return -1;
}

int Msinbox(int x1,int y1,int x2,int y2)
{
   int mx,my;
   regs.x.ax=3;
   int86(0x33,&regs,&regs);
   mx=regs.x.cx;
   my=regs.x.dx;
   if(mx>=x1&&mx<=x2&&my>=y1&&my<y2) return OK;
   else return ERROR;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?