




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言鼠标操作方法及源码( 转载 )鼠标的操作是使用dos中断功能,中断号:33h 下面给几个操作鼠标的示例,后面有更详细的中断功能说明及代码。显示鼠标:union REGS regs;regs.x.ax=1;int86(0 x33,®s,®s); 检查是否被按下: union REGS regs;regs.x.ax=6;int86(0 x33,®s,®s);返回值在bx寄存器中;在实际编程中一般要使用循环不断的检验是否被按下!检验鼠标位置:u nion REGS regs;regs.x.ax=3;int86(0 x33,®s,®s);返回值:x坐标在re
2、gs.h.cxy 坐标在 regs.h.dx/*下面是各值对鼠标的设置功能*/、功能 00H功能描述: 初始化鼠标,该操作只需要执行一次入口参数:AX=00H出口参数:AX=0000H不支持鼠标功能,FFFFH支持鼠标功能BX=鼠标按钮个数(在支持鼠标功能时) 在支持鼠标功能的情况下,鼠标还被设置如下参数:、 鼠标指针放在屏幕中央、 如果当前鼠标指针是显示的,则操作后,鼠标指针被隐藏、 鼠标指针的显示页为 0 、 根据屏幕的显示模式显示鼠标指针:文本 反向显示矩形块,图形 尖头形状、水平象素比=8:8,垂直象素比= 16:8、 设置水平和垂直的显示边界为当前显示模式的最大边界、 允许光笔仿真8
3、、 双速门槛值=64、功能 01H功能描述:显示鼠标指针,通常在鼠标初始化后,用此功能显示其指针 入口参数: AX=01H出口参数: 无、功能 02H功能描述: 隐藏鼠标指针,一般在程序结束时,调用此功能入口参数: AX= 02H出口参数: 无、功能 03H功能描述: 读取鼠标位置及其按钮状态入口参数:AX=03H出口参数:BX =按键状态:位0=1 按下左键位 1=1 按下右键位 2=1 按下中键 其它位 保留,内部使用CX =水平位置DX =垂直位置、功能 04H功能描述: 设置鼠标指针位置入口参数:AX=04H, CX=水平位置,DX =垂直位置出口参数: 无、功能 05H功能描述: 读
4、取鼠标按键信息入口参数:AX=05H, BX=指定的按键:0左键,1右键,2 中键出口参数:人乂 =按键状态,参见功能3H中BX的说明BX=按键次数CX=水平位置(最后按键时)。乂=垂直位置(最后按键时)、功能 06H功能描述: 读取鼠标按钮释放信息入口参数:AX=06H, BX=指定的按键:0左键,1右键,2 中键出口参数:人乂 =按键状态,参见功能3H中BX的说明BX二释放的次数CX=水平位置(最后释放时)。乂 =垂直位置(最后释放时)(8)、功能07H功能描述: 设置鼠标水平边界入口参数:AX=07HCX=最小水平位置DX =最大水平位置出口参数: 无,鼠标有可能因新区域变小而自动移进新
5、区域内、功能 08H功能描述: 设置鼠标垂直边界入口参数:AX=08Hcx=最小垂直位置DX =最大垂直位置出口参数: 无,鼠标有可能因新区域变小而自动移进新区域内、功能 09H功能描述: 设置图形鼠标形状入口参数:AX=09HBX=指针的水平位置。乂=指针的垂直位置ES:DX=16X16位光标的映象地址 参数说明:(BX,CX)是鼠标的指针在16X16点阵中的位置, (0,0)是左上角;ES:DX指向的存储单元内存放16X16点阵的位映象隐码,紧跟其后的是16X16点阵的光 标掩码。“ ” 鼠标指针的显示方法: 位映象隐码 逻辑与 上屏幕显示区的内容,然后再用光标 掩码内“ ” 容 异或 前
6、面运算的结果。出口参数: 无(11)、功能 0AH功能描述: 设置本文鼠标形状入口参数:AX=OAHBX=光标类型:0 CX和DX 的各位含义如下:位70 鼠标指针符号位 108 字符前景色位 11 亮度位 1412 字符背景色位 15 闪烁1 CX=光标的起始扫描线DX =光标的结束扫描线出口参数: 无(12)、功能 0BH功能描述: 读取鼠标移动计数入口参数:AX=0BH出口参数:CX=水平移动距离:正数向右移,负数 向左移DX=垂直移动距离:正数向下移,负数 向上移、功能 0CH功能描述: 为鼠标事件设置处理程序入口参数:AX=0CHCX =中断掩码 位0=1 鼠标指针位置发送变化位1
7、= 1 按下左按钮位 2= 1 释放左按钮位 3=1 按下右按钮位 4=1 释放右按钮位 5=1 按下中间按钮位 6=1 释放中间按钮位 715= 0 保留ES:DX =中断处理程序的地址在进入中断处理程序时,有关寄存器的值含义:AX =中断掩码BX =按键状态CX =鼠标指针的水平位置DX =鼠标指针的垂直位置SI =水平位置的变化量DI =垂直位置的变化量出口参数: 无、功能 0DH功能描述: 允许光笔仿真入口参数: AX= 0DH出口参数: 无(15)、功能 0EH功能描述: 关闭光笔仿真入口参数:AX=OEH出口参数: 无(16)、功能 0FH功能描述: 设置鼠标计数与象素比入口参数:
8、AX=OFHCX =水平比例DX =垂直比例出口参数:无(17)、功能 10H功能描述:设置鼠标指针隐藏区域入口参数:AX = 10HCX=左上角X坐标DX =左上角Y坐标SI=右下角X坐标DI=右下角Y坐标出口参数:无、功能 13H功能描述: 设置倍速的阈值,其缺省值为 64 入口参数:AX = 13HDX =阀值 出口参数: 无、功能 14H功能描述: 替换鼠标事件中断入口参数:AX = 14HCX =中断掩码ES:DX =中断处理程序的地址 出口参数:CX=旧的中断掩码ES:DX =旧的中断处理程序地址、功能 15H功能描述: 读取鼠标驱动器状态的缓冲区大小 入口参数:AX = 15H
9、出口参数:BX=存放鼠标驱动器状态所需缓冲区的大小、功能 16H功能描述: 存储鼠标驱动器状态入口参数:AX = 16HES:DX =存储鼠标驱动器状态的地址 出口参数:无(22)、功能17H 功能描述: 重装鼠标驱动器状态入口参数:AX = 17HES:DX =鼠标驱动器状态的地址 出口参数: 无(23)、功能 18H功能描述: 为鼠标事件设置可选的处理程序入口参数:AX = 18HCX =替换中断掩码ES:DX=替换中断处理程序的地址CF=O出口参数: 无、功能 19H功能描述: 读取替换处理程序的地址入口参数:AX = 19HCX =替换中断掩码出口参数:若AX = -1不成功,否则,E
10、S:DX =中断处理程序的地址、功能 1AH功能描述: 设置鼠标的灵敏度,其取值1100入口参数:AX = 1AHBX=水平灵敏度(每8个象素鼠标需要移动的数量,一般为8)CX=垂直灵敏度(每8个象素鼠标需要移动的数量,一般为16) DX =倍速阀值出口参数: 无、功能 1BH功能描述: 读取鼠标的灵敏度入口参数:AX = 1BH出口参数:BX =水平灵敏度cx=垂直灵敏度DX =倍速阀值、功能 1CH功能描述:设置鼠标中断速率入口参数:AX = 1CHBX=每秒钟中断的次数:0关中断,130/S, 250/S, 3100/S, 4200/S 出口参数: 无、功能 1DH功能描述: 为鼠标指针
11、选择显示页入口参数:AX = 1DHBX =显示页出口参数: 无、功能 1EH功能描述: 读取鼠标指针的显示页入口参数:AX = 1EH出口参数:BX =显示页、功能 1FH功能描述: 禁止鼠标驱动程序入口参数:AX = 1FH出口参数:若AX = -1不成功,否则,ES:BX =鼠标驱动程序的地址、功能 20H功能描述: 启动鼠标驱动程序入口参数:AX=20H出口参数: 无(32)、功能 21H功能描述: 鼠标驱动程序复位入口参数:AX=21H出口参数:若AX = -1不成功,否则,BX=2、功能 22H功能描述: 设置鼠标驱动程序信息语言入口参数:AX=22HBX=语言代码:0英语,1法语
12、,2荷兰语,3德语,4瑞典语,5芬兰语,6西 班牙语, 7葡萄牙语, 8意大利语出口参数: 无、功能 23H功能描述: 读取语种入口参数:AX=23H出口参数:BX =语言代码、功能 24H功能描述: 读取鼠标信息入口参数:AX=24H出口参数:BH =主版本号,BL=辅版本号CL二中断请求号CH=鼠标类型:1Bus Mouse, 2Serial Mouse, 3InPort Mouse, 4PS/2Mouse, 5HP Mouse、功能 25H功能描述: 读取鼠标驱动程序信息入口参数:AX=25H出口参数:AX=鼠标驱动程序信息:位15 0:驱动程序是.SYS文件,否则,为.COM 文件位
13、140: 不完全鼠标显示驱动程序,否则,为完全的位 13-1200: 软件文本光标01: 硬件文本光标1X: 图形光标、功能 26H功能描述: 读取最大有效坐标入口参数:AX=26H出口参数:BX=鼠标驱动程序状态CX=最大水平坐标DX =最大垂直坐标#include#include#include#include#include#include/*鼠标信息宏定义*/#define WAITING 0 xff00#define LEFTPRESS 0 xff01#define LEFTCLICK 0 xff10#define LEFTDRAG 0 xff19#define RIGHTPRESS
14、 0 xff02#define RIGHTCLICK 0 xff20#define RIGHTDRAG 0 xff2a#define MIDDLEPRESS 0 xff04#define MIDDLECLICK 0 xff40#define MIDDLEDRAG 0 xff4c#define MOUSEMOVE 0 xff08int hide1616, bury1616,mousedraw1616,pixelsave1616;/*分别定义隐码、掩码、点值*/int mousebutton,mouseexist,mouseX,mouseY;void mousepicture() /*画心形,可设
15、置其它的图形*/int i,j,k;long hidenum16=0 xe3c7,0 xc183,0 x8001,0 x0000,0 x0000,0 x0000,0 x0000,0 x8001,0 x8001,0 xc003,0 xe007,0 xf00f,0 xf81f,0 xfc3f,0 xfe7f,0 xffff, ; /*隐码点值,是对点素进行设置*/long burynum16=0 x1c38,0 x3e7c,0 x7ffe,0 xffff,0 xffff,0 xffff,0 xffff,0 x7ffe,0 x3ffe,0 x3ffc,0 x1ff8,0 x0ff0,0 x07e0,
16、0 x03c0,0 x0180,0 x0000,;/*掩码点值*/for(i=0;i=0;j-)hideij=hidenumi%2;hidenumi/=2; /*把隐码转化为 0-1*/while(burynumi!=0)for(k=15;k=0;k-)buryij=burynumi%2;burynumi/=2; for(k=0;k16;k+) if(hideik=0&buryik=0)mousedrawik=1;else if(hideik=0&buryik=1) mousedrawik=2;else if(hideik=1&buryik=0)mousedrawik=3;elsemoused
17、rawik=4; /*期间实行逻辑与和异或*/void mouseon(int x,int y) /*显示鼠标*/int i,j;for(i=0;i16;i+)for(j=0;j16;j+)pixelsaveij=getpixel(x+j,y+i);/*取得指定像素的颜色 */if(mousedrawij=1)putpixel(x+j,y+i,6);if(mousedrawij=2) /*1、2 采用点的逻辑运算判断进行着色*/putpixel(x+j,y+i,6);void mouseoff() /* 消失鼠标 */int i,j,x,y,color;x=mouseX;y=mouseY;fo
18、r(i=0;i16;i+)for(j=0;j16;j+)if(mousedrawij=3)|(mousedrawij=4) /*3、 4 采用点的逻辑运算 判断可否继续运行*/continue;putpixel(x+j,y+i,BLACK); /*使其鼠标移动前的位置变为黑色*/ putpixel(x+j,y+i,pixelsaveij);/* 使其恢复指定像素的颜色*/*鼠标是否加载MouseExist:l=加载0=未加载MouseButton:鼠标按键数目 */void mouseload()_AX=0 x00;geninterrupt(0 x33);mouseexist=_AX;mous
19、ebutton=_BX;/*鼠标状态值初始化*/void mousereset()_AX=0 x00;geninterrupt(0 x33);/*0 x33是DOS中断,是在DOS下通过调用中断来对鼠标进行操 作.*/*改变鼠标光标形状SHAPE sp:为以上定义的形状void MouseShape(SHAPE sp)_BX=sp.hotx;_CX=sp.hoty;_ES=FP_SEG(&sp.shape);_DX=FP_OFF(&sp.shape);_AX=0 x09;geninterrupt(0 x33);*/*设置鼠标左右边界lx:左边界gx:右边界 */void mousesetX(i
20、nt lx,int rx)_CX=lx;_DX=rx;_AX=0 x07;geninterrupt(0 x33);/*设置鼠标上下边界uy:上边界dy: 下边界 */void mousesetY(int uy,int dy)_CX=uy; _DX=dy; _AX=0 x08; geninterrupt(0 x33); /*设置鼠标当前位置X:横向坐标y: 纵向坐标 */ void mousesetXY(int X,int y) _CX=X; _DX=y; _AX=0X04; geninterrupt(0X33);/*设置鼠标速度(缺省值:vx=8,vy=l) 值越大速度越慢 */void mousespeed(int vx,int vy) _CX=vx; _DX=vy;_AX=0 x0f; geninterrupt(0 x33); /*获取鼠标按下键的信息*/ /*是否按下左键 返回值: l=按下 0=释放*/int leftpress() _AX=0 x03;geninterrupt(0 x33); return(_BX&l); /*是否按下中键返回值同上 */ int midd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 咖啡智能化管理平台创新创业项目商业计划书
- 美术与设计灵感库与教程创新创业项目商业计划书
- 冷冻牙鲆创新创业项目商业计划书
- 农业生产数据分析与预测平台创新创业项目商业计划书
- 法律园艺设计服务创新创业项目商业计划书
- 动物油脂在化工领域的应用创新创业项目商业计划书
- 2025年广播媒体融合与虚拟偶像产业发展研究报告
- 2025年工业互联网平台量子密钥分发技术专利布局与竞争格局分析报告
- 2025年文化科技融合在数字博物馆虚拟展示中的应用模式与发展前景报告
- 2025年土壤污染修复技术在工业用地中的应用效果与成本效益分析报告
- 初中生叛逆期教育主题班会
- 《农村基层干部廉洁履行职责规定》知识培训
- 符合标准2025年乡村全科助理医师考试试题及答案
- 2025年矿产权评估师练习题及参考答案一套
- 人工智能技术在中职语文教学中的实践
- 中职新能源汽车专业实训虚实结合教学模式创新研究
- 2025年《新课程标准解读》标准课件
- 员工培训内容与进度记录表
- 《分娩指导及助产技巧》课件
- 图像数据采集与处理方法-洞察分析
- 云南省昆明市官渡区2023-2024学年九年级上学期期末语文试卷(解析版)
评论
0/150
提交评论