📄 mouse.c
字号:
#include "compute.h"
int MouseLeftFlag=0; /* 鼠标左键单击标志,全局变量 1-单击 0-未单击 */
/**********************************************************
* 函数原型:void initmouse() *
* 传入参数:无 *
* 返 回 值:无 *
* 函数功能:鼠标初始化 *
* 鼠标初始化失败,则程序终止退出 *
**********************************************************/
void initmouse()
{
union REGS ireg,oreg;
int ret;
ireg.x.ax=0; /* 鼠标器0号功能:鼠标复位 */
int86(0x33,&ireg,&oreg); /* 调用0x33中断 */
ret=oreg.x.ax;
if(ret!=-1) /* 中断返回不是-1,表示未找到鼠标驱动 */
{
printf("Mouse is not installed.");
exit(1);
}
}
/**********************************************************
* 函数原型:void get_mouse_position(int *x,int *y) *
* 传入参数:x, y是指针变量,指向鼠标坐标(x,y)的地址 *
* 返 回 值:无 *
* 函数功能:获取鼠标位置坐标(x,y) *
* 函数无返回值,鼠标位置坐标由指针变量x,y带回 *
**********************************************************/
void get_mouse_position(int *x,int *y)
{
union REGS ireg,oreg;
ireg.x.ax=3; /* 鼠标器3号功能:取按钮状态和鼠标位置 */
int86(0x33,&ireg,&oreg);
*x=oreg.x.cx; /* 鼠标x坐标值存于指针x指向的单元 */
*y=oreg.x.dx; /* 鼠标y坐标值存于指针y指向的单元 */
}
/**********************************************************
* 函数原型:int leftpress() *
* 传入参数:无 *
* 返 回 值:1-左键单击 0-左键未单击 *
* 函数功能:检测鼠标左键是否单击 *
**********************************************************/
int leftpress()
{
union REGS ireg,oreg;
ireg.x.ax=3; /* 鼠标器3号功能:取按钮状态和鼠标位置*/
int86(0x33,&ireg,&oreg);
delay(30000); /* 延时处理 */
if(oreg.x.bx&1) /* 单击了左键则置MouseLeftFlag为1,
左键单击被处理后,该标志重新置为0 */
MouseLeftFlag=1;
return oreg.x.bx&1;
}
/**********************************************************
* 函数原型:int rightpress() *
* 传入参数:无 *
* 返 回 值:1-右键单击 0-右键未单击 *
* 函数功能:检测鼠标右键是否单击 *
**********************************************************/
int rightpress()
{
union REGS ireg,oreg;
ireg.x.ax=3; /* 鼠标器3号功能:取按钮状态和鼠标位置*/
int86(0x33,&ireg,&oreg);
return oreg.x.bx&2?1:0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -