📄 mymouse.c
字号:
/*****关于鼠标编程****/
/***本部分是调用BIOS的33H鼠标中断功能,详细情况可参阅有关资料***/
#include<dos.h>
int reset_mouse(); /**初始华鼠标**/
void light_mouse(int op); /**显示鼠标 op=1显示,op=2 关闭**/
int get_mouse_status(int *x,int *y); /**获取鼠标当前状态**/
void set_mousexy(int x,int y); /**使鼠标跳到坐标 x,y**/
/***设置鼠标的活动范围( left,top,right,bottom分别为左上角和右下角坐标)**/
void set_mouse_range(int left,int top,int right,int bottom);
extern int have_mouse=0; /***鼠标是否安装(1是,0否)***/
extern int mx=100,my=100; /**鼠标坐标(mouse x,mouse y的缩写)***/
/****函数reset_mouse();初始化鼠标及其驱动*****/
int reset_mouse()
{
union REGS r;
r.x.ax=0; /**初始化功能号为00***/
int86(0x33,&r,&r);
have_mouse=r.x.ax;
return r.x.ax==0?0:r.x.bx;/**bx中为按键数**/
}
#define ON 1
#define OFF 2
/**显示,隐藏鼠标光标,op=ON为显示,op=OFF为隐藏***/
void light_mouse(int op)
{
union REGS r;
if(have_mouse)
{r.x.ax=op;
int86(0x33,&r,&r);
}
}
#define LEFT_BUTTON 1 /*左键*/
#define RIGHT_BUTTON 2 /*右键*/
#define BOTH_BUTTON 3 /*两键同时按下*/
int get_mouse_status(int *x,int *y)
{
union REGS r;
if(have_mouse)
{
r.x.ax=3;
int86(0x33,&r,&r);
*x=r.x.cx;
*y=r.x.dx;
return r.x.bx;
}
else return 0;
}
void set_mousexy(int x,int y)
{
union REGS r;
if(have_mouse)
{r.x.ax=4;
r.x.cx=x;
r.x.dx=y;
int86(0x33,&r,&r);
}
}
void set_mouse_range(int left,int top,int right,int bottom)
{ /**left,top,right,bottom分别为左上角和右下角坐标**/
union REGS r;
if(have_mouse)
{r.x.ax=7; /**设置x方向活动范围**/
r.x.cx=left;
r.x.dx=right;
int86(0x33,&r,&r);
r.x.ax=8;/** 设置y方向活动范围**/
r.x.cx=top;
r.x.dx=bottom;
int86(0x33,&r,&r);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -