C语言鼠标操作方法及源码(转载)
鼠标的操作是使用dos中断功能,中断号:33h
下面给几个操作鼠标的示例,后面有更详细的中断功能说明及代码。
显示鼠标:
union REGS regs;
int86(0x33,®s,®s);
检查是否被按下:
union REGS regs;
int86(0x33,®s,®s);
返回值在bx寄存器中;
在实际编程中一般要使用循环不断的检验是否被按下!
检验鼠标位置:union REGS regs;
int86(0x33,®s,®s);
返回值:x坐标在
y坐标在regs.h.dx
/*下面是各值对鼠标的设置功能*/
(1)、功能00H
功能描述:初始化鼠标,该操作只需要执行一次
入口参数:AX=00H
出口参数:AX=0000H——不支持鼠标功能,FFFFH——支持鼠标功能
BX=鼠标按钮个数(在支持鼠标功能时)
在支持鼠标功能的情况下,鼠标还被设置如下参数:
1 、鼠标指针放在屏幕中央
2 、如果当前鼠标指针是显示的,则操作后,鼠标指针被隐藏
3 、鼠标指针的显示页为0
4 ——、根据屏幕的显示模式显示鼠标指针:文本反向显示矩形块,图形尖头形状
5 、水平象素比=8:8,垂直象素比=16:8
6 、设置水平和垂直的显示边界为当前显示模式的最大边界
7 、允许光笔仿真
8 、双速门槛值=64
(2)、功能01H
功能描述:显示鼠标指针,通常在鼠标初始化后,用此功能显示其指针入口参数:AX =01H
出口参数:无
(3)、功能02H
功能描述:隐藏鼠标指针,一般在程序结束时,调用此功能
入口参数:AX=02H
出口参数:无
(4)、功能03H
功能描述:读取鼠标位置及其按钮状态
入口参数:AX=03H
出口参数:BX =按键状态:位0=1——按下左键
位1=1——按下右键
位2=1——按下中键
——其它位保留,内部使用
CX =水平位置
DX =垂直位置
(5)、功能04H
功能描述:设置鼠标指针位置
入口参数:AX=04H,CX=水平位置,DX =垂直位置
改变button按钮的形状出口参数:无
(6)、功能05H
功能描述:读取鼠标按键信息
入口参数:AX=05H,BX=指定的按键:0—左键,1—右键,2—中键
出口参数:AX=按键状态,参见功能3H中BX的说明
BX=按键次数
CX=水平位置(最后按键时)
DX=垂直位置(最后按键时)
(7)、功能06H
功能描述:读取鼠标按钮释放信息
入口参数:AX=06H,BX=指定的按键:0—左键,1—右键,2—中键
出口参数:AX=按键状态,参见功能3H中BX的说明
BX=释放的次数
CX=水平位置(最后释放时)
DX=垂直位置(最后释放时) (8)、功能07H
功能描述:设置鼠标水平边界
入口参数:AX=07H
CX=最小水平位置
DX =最大水平位置
出口参数:无,鼠标有可能因新区域变小而自动移进新区域内
(9)、功能08H
功能描述:设置鼠标垂直边界
入口参数:AX=08H
CX=最小垂直位置
DX =最大垂直位置
出口参数:无,鼠标有可能因新区域变小而自动移进新区域内
(10)、功能09H
功能描述:设置图形鼠标形状
入口参数:AX=09H
BX=指针的水平位置
CX=指针的垂直位置
ES:DX=16×16 位光标的映象地址参数说明:(BX,CX)是鼠标的指针在16×16点阵中
的位置,(0,0)是左上角;
ES:DX指向的存储单元内存放16×16点阵的位映象隐码,紧跟其后的是16×16点阵的光标掩码。
“”鼠标指针的显示方法:位映象隐码逻辑与上屏幕显示区的内容,然后再用光标掩码内
“”容异或前面运算的结果。
出口参数:无
(11)、功能0AH
功能描述:设置本文鼠标形状
入口参数:AX=0AH
BX =光标类型:0 —CX和DX 的各位含义如下:位7~0 鼠标指针符号
位10~8 字符前景
位11 亮度
位14~12 字符背景
位15 闪烁
1 —CX =光标的起始扫描线
DX =光标的结束扫描线
出口参数:无(12)、功能0BH
功能描述:读取鼠标移动计数
入口参数:AX=0BH
出口参数:CX ————=水平移动距离:正数向右移,负数向左移
DX ————=垂直移动距离:正数向下移,负数向上移
(13)、功能0CH
功能描述:为鼠标事件设置处理程序
入口参数:AX=0CH
CX =中断掩码位0=1 ——鼠标指针位置发送变化
位1=1 ——按下左按钮
位2=1 ——释放左按钮
位3=1 ——按下右按钮
位4=1 ——释放右按钮
位5=1 ——按下中间按钮
位6=1 ——释放中间按钮
位7~15=0 ——保留
ES:DX =中断处理程序的地址
在进入中断处理程序时,有关寄存器的值含义:
AX =中断掩码
BX =按键状态
CX =鼠标指针的水平位置
DX =鼠标指针的垂直位置
SI =水平位置的变化量
DI =垂直位置的变化量
出口参数:无
(14)、功能0DH
功能描述:允许光笔仿真
入口参数:AX=0DH
出口参数:无
(15)、功能0EH
功能描述:关闭光笔仿真
入口参数:AX=0EH
出口参数:无
(16)、功能0FH 功能描述:设置鼠标计数与象素比
入口参数:AX=0FH
CX =水平比例
DX =垂直比例
出口参数:无
(17)、功能10H
功能描述:设置鼠标指针隐藏区域
入口参数:AX=10H
CX=左上角X 坐标
DX=左上角Y坐标
SI=右下角X 坐标
DI=右下角Y坐标
出口参数:无
(18)、功能13H
功能描述:设置倍速的阈值,其缺省值为64
入口参数:AX=13H
DX =阀值
出口参数:无
(19)、功能14H
功能描述:替换鼠标事件中断
入口参数:AX=14H
CX =中断掩码
ES:DX =中断处理程序的地址
出口参数:CX =旧的中断掩码
ES:DX =旧的中断处理程序地址
(20)、功能15H
功能描述:读取鼠标驱动器状态的缓冲区大小
入口参数:AX=15H
出口参数:BX =存放鼠标驱动器状态所需缓冲区的大小(21)、功能16H
功能描述:存储鼠标驱动器状态
入口参数:AX=16H
ES:DX =存储鼠标驱动器状态的地址
出口参数:无(22)、功能17H
功能描述:重装鼠标驱动器状态
入口参数:AX=17H
ES:DX =鼠标驱动器状态的地址
出口参数:无
(23)、功能18H
功能描述:为鼠标事件设置可选的处理程序
入口参数:AX=18H
CX =替换中断掩码
ES:DX =替换中断处理程序的地址
CF=0
出口参数:无
(24)、功能19H
功能描述:读取替换处理程序的地址
入口参数:AX=19H
CX =替换中断掩码
出口参数:若AX=-1——不成功,否则,ES:DX =中断处理程序的地址(25)、功能1AH
功能描述:设置鼠标的灵敏度,其取值1~100
入口参数:AX=1AH
BX=水平灵敏度(每8个象素鼠标需要移动的数量,一般为8)
CX=垂直灵敏度(每8个象素鼠标需要移动的数量,一般为16)
DX =倍速阀值
出口参数:无
(26)、功能1BH
功能描述:读取鼠标的灵敏度
入口参数:AX=1BH
出口参数:BX=水平灵敏度
CX=垂直灵敏度
DX =倍速阀值
(27)、功能1CH
功能描述:设置鼠标中断速率入口参数:AX=1CH
BX=每秒钟中断的次数:0—关中断,1—30/S,2—50/S,3—100/S,4—200/S 出口参数:无
(28)、功能1DH
功能描述:为鼠标指针选择显示页
入口参数:AX=1DH
BX =显示页
出口参数:无
(29)、功能1EH
功能描述:读取鼠标指针的显示页
入口参数:AX=1EH
出口参数:BX =显示页
(30)、功能1FH
功能描述:禁止鼠标驱动程序
入口参数:AX=1FH
出口参数:若AX=-1——不成功,否则,ES:BX =鼠标驱动程序的地址(31)、功能20H
功能描述:启动鼠标驱动程序
入口参数:AX=20H
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论