C言语图形方式编程,特征鼠标(5)

{  /* 读取鼠标及键盘外形*/
   int    but_old=*buttons;
   int    x_old=*px,y_old=*py;


   do{               /* 或 return getch(); 前往ASCII码值*/
         if(kbhit()) return bioskey(0);/* 如有键清点击前往键值*/
         regs.x.ax=3;
         int86(0x33,&regs,&regs);
         *px=regs.x.cx;       /* x坐标*/
         *py=regs.x.dx;       /* y坐标*/
         *buttons=regs.x.bx;  /* 前往鼠标击键外形:
                                 0未点击    1点击左键
                                 2点击右键  3点击双键*/
   }while(*px==x_old&&*py==y_old&&*buttons==but_old);

   MouseOff(x_old,y_old);/* 原地位异或消去擦除,并答复*/
   but_old=*buttons;
   x_old=*px;
   y_old=*py;
   MouseOn(*px,*py);     /* 新地位显现*/
   return -1;
}

int MouseInbox(int x1,int y1,int x2,int y2,int x,int y)
{
     return((x>=x1&&x<=x2&&y>=y1&&y<=y2)?1:0);  /* 若在预定地区就前往 1 */
}

int MouseInit()
{   /* 初始化鼠标*/
    int recored;

    MouseMath();            /* 初始化时先竞赛争论*/
    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;
}

void main()
{
    int  msx,msy,msz,order;
    int  gmode=0,gdriver=DETECT;/* 和gdriver = VGA,gmode = VGAHI是十分效果 */

    registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不用要.BGI文件的支撑运转 */
    initgraph(&gmode,&gdriver,"");
    if(graphresult())
    {
        printf ("Graphics isn't available...");
        getch();exit(1);
    }
    MouseInit();/* 初始化*/

    setcolor(1);
    rectangle(140,80,500,110);
    setfillstyle(8,2);
    floodfill(150,100,1);setcolor(15);
    outtextxy(182,85,"Move to me to change mouse's shape");
    outtextxy(180,100,"Click me to quit ...  QQ: 527274766");
    for(;;)
    {
        order=MouseRead(&msx,&msy,&msz);
        if(order==283)  break;

        if( MouseInbox(140,80,500,110,msx,msy))
        {   /* 变化鼠标外形*/
            if(Mousekind!=1 0*2 9*4 15*64)
            {
                MouseOff(msx,msy);/* 擦除*/
                Mousekind=1 0*2 9*4 15*64;/* 变化*/
                MouseMath();/* 从头竞赛争论鼠标外形*/
            }
            if(msz==1)   { closegraph();exit(0);}
        }
        else
        {   /* 答复鼠标外形*/
            if(Mousekind!=0 1*2 15*4 2*64)
            {
                MouseOff(msx,msy);
                Mousekind=0 1*2 15*4 2*64;
                MouseMath();
            }
       }
   }
}



版权声明: 原创作品,允许转载,转载时请务必以超链接方式标明文章 原始来因 、作者信息和本声明。不然将穷究法令责任。

posted @ 2011-03-07 18:39  蓝色的天空III  阅读(98)  评论(0编辑  收藏  举报