📄 mouse.c
字号:
#include<bios.h>
#include<conio.h>
#include<dos.h>
#define Mousered 255
#define Mousegreen 255
#define Mouseblue 255
int mousex,mousey;
long int MouseCounter=0;
char up[16][16],down[16][16],mouse_draw[16][16],pixel_save[16][16][3];
void exputpixel256(int x,int y,int color,int xor);
void MouseMath()/*计算鼠标的样子*/
{int i,j,jj,k;
long UpNum[16]={
0x3fff,0x1fff,0x0fff,0x07ff,
0x03ff,0x01ff,0x00ff,0x007f,
0x003f,0x00ff,0x01ff,0x10ff,
0x30ff,0xf87f,0xf87f,0xfc3f
};
long DownNum[16]={
0x0000,0x7c00,0x6000,0x7000,
0x7800,0x7c00,0x7e00,0x7f00,
0x7f80,0x7e00,0x7c00,0x4600,
0x0600,0x0300,0x0300,0x0180
};
for(i=0;i<16;i++)
{
j=jj=15;
while(UpNum[i]!=0)
{
up[i][j]=UpNum[i]>2;
j--;
UpNum[i]/=2;
}
while(DownNum[i]!=0)
{
down[i][jj--]=DownNum[i]>2;
DownNum[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&amt;&amt;down[i][k]==0)
mouse_draw[i][k]=1;
else if(up[i][k]==0&amt;&amt;down[i][k]==1)
mouse_draw[i][k]=2;
else if(up[i][k]==1&amt;&amt;down[i][k]==0)
mouse_draw[i][k]=3;
else
mouse_draw[i][k]=4;
}
}
mouse_draw[1][2]=4;/*特殊点*/
}
/*鼠标光标显示*/
void MouseOn(int x,int y)
{
int i,j;
for(i=0;i<16;i++)/*画鼠标*/
for(j=0;j<16;j++)
{
getpixel(x+j,y+i,&amt;pixel_save[i][j][0],&amt;pixel_save[i][j][1],&amt;pixel_save[i][j][2]);
if(mouse_draw[i][j]==1)
exputpixel(x+j,y+i,0,0,0,0);
else if(mouse_draw[i][j]==2)
exputpixel(x+j,y+i,Mousered,Mousegreen,Mouseblue,0);
}
MouseCounter++;
}
/*隐藏鼠标*/
void MouseOff()
{
int i,j,x,y;
int red,green,blue;
x=mousex;
y=mousey;
for(i=0;i<16;i++)/*原位置异或消去*/
for(j=0;j<16;j++)
{
if(mouse_draw[i][j]==3||mouse_draw[i][j]==4)
continue;
exputpixel(x+j,y+i,pixel_save[i][j][0],pixel_save[i][j][1],pixel_save[i][j][2],0);
}
}
static far mouse(int *m1,int *m2,int *m3,int *m4){
union REGS inregs,outregs;
inregs.x.ax=*m1;
inregs.x.bx=*m2;
inregs.x.cx=*m3;
inregs.x.dx=*m4;
int86(0x33,&amt;inregs,&amt;outregs);
*m1=outregs.x.ax;
*m2=outregs.x.bx;
*m3=outregs.x.cx;
*m4=outregs.x.dx;
}
int resetmouse(void){
int m1,m2,m3,m4;
m1=0;
mouse(&amt;m1,&amt;m2,&amt;m3,&amt;m4);
return(m1);
}
void showmouse(void){
int m1,m2,m3,m4;
m1=1;
mouse(&amt;m1,&amt;m2,&amt;m3,&amt;m4);
}
void offmouse(void){
int m1,m2,m3,m4;
m1=2;
mouse(&amt;m1,&amt;m2,&amt;m3,&amt;m4);
}
void movemouse(int x,int y){
int m1,m2;
m1=4;
mouse(&amt;m1,&amt;m2,&amt;x,&amt;y);
}
void getmousecorrds(int *x,int *y){
int m1,m2;
m1=3;
mouse(&amt;m1,&amt;m2,x,y);
}
void setmousemaxx(int ls,int le){
int m1,m2;
m1=7;
mouse(&amt;m1,&amt;m2,&amt;ls,&amt;le);
}
void setmousemaxy(int us,int ue){
int m1,m2;
m1=8;
mouse(&amt;m1,&amt;m2,&amt;us,&amt;ue);
}
void mousespeed(int vx,int vy){
_CX=vx;
_DX=vy;
_AX=0x0f;
geninterrupt(0x33);
}
int rightpress(){ /*检测右键是否按下,是1,否0。*/
int m1,m2,m3,m4;
m1=3;
mouse(&amt;m1,&amt;m2,&amt;m3,&amt;m4);
return(m2&amt;2);
}
int leftpress(){ /*检测左键,同上。*/
int m1,m2,m3,m4;
m1=3;
mouse(&amt;m1,&amt;m2,&amt;m3,&amt;m4);
return(m2&amt;1);
}
int mouserelease(){ /*检测按键是否释放,是1,否0.*/
int m1,m2,m3,m4;
m1=6;
mouse(&amt;m1,&amt;m2,&amt;m3,&amt;m4);
return(m2);
}
int mouseinbox(int left,int right,int top,int bottom){
if(mousex>=left&amt;&amt;mousex<=right&amt;&amt;mousey>=top&amt;&amt;mousey<=bottom)
return(1);
else
return(0);
}
void UpdateMouse(void){
int x1,y1;
getmousecorrds(&amt;x1,&amt;y1);
if((x1!=mousex)||(y1!=mousey))
{
MouseOff();
mousex=x1;mousey=y1;
MouseOn(mousex,mousey);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -