C语言鼠标操作方法及源码(转载)
鼠标的操作是使用dos中断功能,中断号:33h
下面给几个操作鼠标的示例,后面有更详细的中断功能说明及代码。 显示鼠标:
union REGS regs;
regs.x.ax=1;
int86(0x33,®s,®s); 检查是否被按下:
union REGS regs;
regs.x.ax=6;
int86(0x33,®s,®s);
返回值在bx寄存器中;
在实际编程中一般要使用循环不断的检验是否被按下! 检验鼠标位置:union REGS regs;
regs.x.ax=3;
int86(0x33,®s,®s);
返回值:x坐标在regs.h.cx
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
=垂直位置
出口参数: 无 (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
.................................................................................
?