*px=regs.x.cx;,        *py=regs.x.d



  *px=regs.x.cx;

         *py=regs.x.dx;

         *buttons=regs.x.bx;

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


    MsOff(x_old,y_old);

    but_old=*buttons;

    x_old=*px;

    y_old=*py;

    MsOn(x_old,y_old);

    return -1;

}

int Msinbox(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 End()

{

    closegraph();

    exit(0);

}

不盛情思,没例子几乎难懂,以下是一个复杂的例子(把鼠标移到长条框就可以变化鼠标了):


/*-----------------------------------------------------------*/

/*---                                                     ---*/

/*---          C 言语"箭头鼠标"与"手形鼠标"的切换         ---*/

/*---                                                     ---*/

/*---                                ---   2007.03.18  ---*/

/*-----------------------------------------------------------*/

#include <stdio.h>

#include <graphics.h>

#include <dos.h>

/*=======================  必需的全局变量  ===================*/

union REGS regs;

int   up[16][16],down[16][16];

int   mouse_draw[16][16];

int   pixel_save[16][16];      /* 保管被鼠标笼盖的区域颜色*/

int   Mousekind=0 1*2 15*4 2*64;

      /* "形状(0和1)","标志核心或内部颜色(此中的 15 和 2)"*/

/*===========================================================*/

void MouseMath()    /* 计算鼠标的样子*/

{   /*Point hotspot[]={{0,11},{0,0},{4,0},{4,0}};热点*/

    int    i,j,jj,k;

    int    full,kind;

    long   UpNum[2][16] = { /* hand */

        0xf3ff,0xe1ff,0xe1ff,0xe1ff,

        0xe001,0xe000,0xe000,0xe000,

        0x8000,0x0000,0x0000,0x0000,

        0x0000,0x0000,0x8001,0xc003,

        0x3fff,0x1fff,0x0fff,0x07ff,/*  arrow箭头 */

        0x03ff,0x01ff,0x00ff,0x007f,

        0x003f,0x00ff,0x01ff,0x10ff,

        0x30ff,0xf87f,0xf87f,0xfc3f,

    };

    long   DownNum[2][16]={ /* hand */

        0x0c00,0x1200,0x1200,0x1200,

        0x13fe,0x1249,0x1249,0x1249,

        0x7249,0x9001,0x9001,0x9001,

        0x8001,0x8001,0x4002,0x3ffc,

        0x0000,0x4000,0x6000,0x7000,/*  arrow箭头 */

        0x7800,0x7c00,0x7e00,0x7f00,

        0x7f80,0x7e00,0x7c00,0x4600,

        0x0600,0x0300,0x0300,0x0180,

    };

    kind = (Mousekind>>1)%2;  /* 手形仍是箭头*/

    full = Mousekind%2;       /* 能否空心*/

    for(i=0;i<16;i )

    {

         j=jj=15;

         while(UpNum[kind][i]!=0)

         {

             up[i][j]=UpNum[kind][i]%2;

             j--;

             UpNum[kind][i]/=2;

         }

         while(DownNum[kind][i]!=0)

         {

             down[i][jj--]=DownNum[kind][i]%2;

             DownNum[kind][i]/=2;

         }

         for(k=j ;k>=0;k--)  up  [i][k]=0;

         for(k=jj;k>=0;k--)  down[i][k]=0;

         for(k=0;k<16;k )

         {   /*四种组合体式格式*/

             if(up[i][k]==0&&down[i][k]==0)

             {   /* 能否为空心*/

                 if(full)    mouse_draw[i][k]=1;

                 else        mouse_draw[i][k]=2;

             }

             else if(up[i][k]==0&&down[i][k]==1)

             {

                 if(full)    mouse_draw[i][k]=2;

                 else        mouse_draw[i][k]=1;

             }

             else if(up[i][k]==1&&down[i][k]==0) mouse_draw[i][k]=3;

             else                                mouse_draw[i][k]=4;

         }

    }

    if(kind==1) mouse_draw[1][2]=0;/*不凡点*/

    else        mouse_draw[1][2]=4;

}

void MouseOn(int x,int y)

{   /* 鼠标光标表现*/

    int  i,j;

    int  color[2];

    color[0]=Mousekind>>2;

    color[1]=Mousekind>>6;

    for(i=0;i<16;i )

    {

        for(j=0;j<16;j )

        {

            pixel_save[i][j]=getpixel(x j,y i);/* 保管原来的颜色*/

            if(mouse_draw[i][j]==1)

                putpixel(x j,y i,color[0]);

            else if(mouse_draw[i][j]==2)       /* 画鼠标*/

                putpixel(x j,y i,color[1]);

        }

    }

}

void MouseOff(int x,int y)

{   /* 隐蔽鼠标*/

    int  i,j,color;

    for(i=0;i<16;i )

    for(j=0;j<16;j )

    {

         if(mouse_draw[i][j]==3||mouse_draw[i][j]==4)  continue;

         color=getpixel(x j,y i);

         putpixel(x j,y i,color^color);     /* 原位置异或消去*/

         putpixel(x j,y i,pixel_save[i][j]);/* 复原原后台*/

    }

}

int MouseRead(int *px,int *py,int *buttons)





版权声明: 原创作品,答理转载,转载时请务必以超链接方式标明文章 原始出处 、作者信息和本声明。不然将清查法律责任。