好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第3章鼠标器原理及应用.ppt

14页
  • 卖家[上传人]:金**
  • 文档编号:204173610
  • 上传时间:2021-10-24
  • 文档格式:PPT
  • 文档大小:63.50KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 计算机图形学,E-mail: harry.,第3章 鼠标器原理及应用,3.1 鼠标的安装 3.2 鼠标光标的显示 3.3 鼠标器功能 3.4 支持鼠标的交互式图形软件,3.1 鼠标器原理,翻开计算机后, 即使你已经配置了鼠标器, 也还必须安装鼠标驱动程序,才能使鼠标器开始工作鼠标驱动程序有两类:其一为可执行的驱动程序,如:MOUSE.COM;其二为设备驱动程序,即 MOUSE.SYS两种方式都可以配置在dos系统配置文件config.sys中 鼠标驱动程序装入内存后,其起始地址固定在51*4204,该地址与中断向量51(十六进制0 x33)相对应因此,凡与鼠标有关的操作都是通过对0 x33号中断进展 一旦安装好了鼠标驱动程序, 每当挪动鼠标或按下鼠标器上一个按键时, 均会产生一次中断33H鼠标驱动程序处理这次中断,设置相应的内部变量,然后返回当鼠标处于静止状态时,驱动程序不返回任何信息,计算机的性能不会受到任何影响3.1 鼠标器原理,当用键盘作为输入设备时,屏幕上有一个光标表示当前光标位置当用鼠标作为输入设备时,也应该有一个类似的光标作为辅助, 以表示光标的位置, 在Microsoft的鼠标库函数中定义了缺省的光标形状: 在图形方式下是一个箭头, 在文本方式下是一个亮块。

      还可以通过鼠标函数控制鼠标光标的点亮和熄灭 虽然鼠标与显示屏幕在物理上是彼此分开的,但可以把鼠标想象为与屏幕是连在一起的,这是因为鼠标驱动程序自动地维护着一个计算器,借以指示鼠标光标当前在什么位置当用户挪动鼠标时,光标在屏幕上也随之向同一方向挪动鼠标挪动的间隔 是以mickey为单位进展量度的, 一个mickey等于1/200英寸当然,对用户来说,并不需要知道鼠标挪动的实际间隔 , 因为使用鼠标设备仅仅只是一个相对位置定标设备3.1 鼠标器原理,要理解鼠标器是如何与显示器通讯,还必须理解虚拟屏幕的概念所谓虚拟屏幕,是对不同显示器上提供的显示方式的一种简化虚拟屏幕可以看作是对物理屏幕的一个抽象对程序员来说,你只需要理解虚拟屏幕的坐标位置鼠标驱动程序会把虚拟屏幕按着当前的显示方式翻译到物理屏幕 鼠标驱动程序把虚拟屏幕当做由程度和垂直排列的点组成的矩阵虚拟屏幕的大小等于当前显示形式的屏幕分辨率如:在CGAHI形式下,屏幕分辨率为640200,虚拟屏幕的坐标范围即为0,0到640,200 你可以用中断10H启动计算机的ROM BIOS来设置或改变屏幕显示方式在使用中断10H时, 必须提供一个功能号来指明中断10H所执行的操作。

      当程序调用中断10H改变屏幕方式时,鼠标驱动程序载取这个中断,并决定采用什么样的虚拟屏幕或者, 当程序调用鼠标器 0 号功能(把鼠标器参数设为缺省值)时, 鼠标器软件也会判别当前显示方式并选择适宜的虚拟屏幕3.2 鼠标光标的显示,在IBM 系列微机上有多种显示卡和显示器不同的屏幕显示方式和屏幕特性会影响鼠标光标在屏幕上的显示和挪动 屏幕显示方式定义了屏幕的象素个数每个象素是屏幕上的独立点屏幕显示方式取决于显示卡的类型有些显示卡既能显示亮点即所谓“图形方式,也能显示亮块既所谓“文本方式虽然各种方式有自己的特点,但鼠标驱动程序对同一类方式采用一致的方法3.3 鼠标器功能,鼠标驱动程序包含35个输入输出操作每个操作(通常称为功能)都是通过给驱动程序发出一个特殊的指令,使应用程序和鼠标器硬件通讯有些函数是向鼠标器查询状态的,如按键状态等另一些功能那么控制鼠标器接口的特性,如光标的分辨率、光标形状及光标挪动范围等应用程序只须把所需功能告诉驱动程序,而由驱动程序做详细工作在可以使用鼠标之前, 必须对鼠标进展初始化这要通过0号功能完成调用此功能后,鼠标驱动程序重置, 即初始化为各个缺省值,并在发现鼠标硬件和驱动程序时,在AX存放器返回-1。

      否那么,返回0因此,通过0号功能还可以测试鼠标器及鼠标驱动程序是否存在 调用格式: 输入参数:AX=0 返回信息:假设AX0,表示鼠标未安装好,假设AX1,表示鼠标按照成功,BX等于鼠标器的按键数例31测试鼠标安装情况, 并显示检测结果 #include union REGS regs; int msinit_0(int Xlo, int Xhi, int Ylo, int Yhi) int recored; int86(0 x33, 参数intno, intregs, outregs分别表示中断号、输入存放器、输出存放器假设鼠标初始化成功,那么函数同时设定鼠标挪动范围为X方向(XloXhi)、Y方向(YloYhi),这实际上同时也限定了鼠标器返回值的范围一旦鼠标初始化成功,就可通过号中断来获取任意时刻的鼠标器位置和状态 鼠标器功能3 返回鼠标器左右键的状态, 及光标在屏幕上的程度和垂直坐标 按键状态是一个整数值,低位字节表示左键, 高位字节表示右键, 即:按键状态为1时表示左键按下, 为2 时表示右键按下, 当没有键按下时状态为0(使用三键鼠标时,中间键的状态值为4) 调用格式: 输入参数:AX3 返回信息:CX返回鼠标位置的X坐标 DX返回鼠标位置的Y坐标 BX返回鼠标按键状态: BX0 没有健按下, BX1 左健被按下; BX2 右键被按下, BX3 左右健同时被按下。

      以下的函数msget()就是调用功能来读取鼠标状态和鼠标位置 void msget(int *px, int *py, int *pbuttons) int86(0 x33, 就会把当前的鼠标位置x和y值及一个非零整数(当某个鼠标键被按下时)分别放入变量x,y和buttons中在使用鼠标进展输入时,有一个不可无视的问题:在使用鼠标时,你可以编一个简单的循环, 不断的调用msget()以获取当前坐标,但这样做是很糟的,因为这会不断的产生一列一列的一样的重复值而我们所希望的应是这样一个函数,它只是在有新的值变化时才返回x和y的值(或鼠标键的状态)这就是说,需要使用一个等待(延迟)循环,此循环只有在当x,y或鼠标键的状态改变时才终止退出但是,假设只简单地施行和使用这样技术的话,又会引起另一个问题:假设等待循环只有在鼠标的状态改变之后才能终止,那么,当你在键盘上操作以希望计算机执行某个任务时,机器那么根本不会作任何响应因此,实际使用时又在等待循环内参加一个标准函数kbhit()见下页例如标准鼠标函数,int msread(int *px, int *py, int *pbuttons) static int but0 = -1; /* 静态变量保存先前鼠标状态 */ static int x0 = -1, y0 = -1; /* 静态变量保存先前鼠标位置 */ do if (kbhit() return getch(); /* 当有键盘操作时退出循环 */ msget(px, py, pbuttons); /* 读鼠标状态及鼠标位置 */ while (*px=x0 /* 无键盘操作,仅有鼠标器操作时返回 -1 */ 该函数定义了三个静态整型变量:x0,y0,but0,用以保存先前的鼠标位置及鼠标状态。

      在循环体内,先判断是否有击键,假设有就由函数getch()返回键码否那么读鼠标,仅当鼠标位置及状态均有变化时,才退出循环,并将新的鼠标位置和状态保存到三个静态变量中,然后函数返回一个非零值3.4 支持鼠标的交互式图形软件,下面的例子Example2.C将说明如何使用鼠标挪动屏幕上的光标,并通过挪动鼠标或从键盘输入端点坐标来挪动光标画线 在函数newposition()中,原有用上下左右光标键控制光标挪动一个步长、用PgUp,PgDn键增减步长及用回车键代替鼠标按键,用“键终止多义线的功能仍然保存这样,即使在没有鼠标的情况下也能运行该程序 使用鼠标画线要经过以下步骤: 将光标移至要画的线的一个端点; 用鼠标键或回车键选中该点; 将光标移至要画的线的另一端; 用鼠标左键或回车键选中该点 假设想终止折线,用户只需在第步中改用鼠标右键或字母“键即可。

      点击阅读更多内容
      相关文档
      云南省红河州河口县语文二年级下学期期末试题+2020-2021学年.pdf 八年级生物开学摸底考(人教版)(答题卡).pdf 云南省文山州砚山县数学四年级下学期期末试题 2020-2021学年 (2).pdf 八年级生物开学摸底考(辽宁专用)(答题卡).pdf 八年级生物开学摸底考(海南专用)(答题卡).pdf 云南省昆明市五华区数学四年级第二学期期末考试 2020-2021学年.pdf 八年级生物开学摸底考(南京专用)(答题卡).pdf 八年级生物开学摸底考(湖南专用)(答题卡).pdf 云南省德宏州语文五年级下学期期末试题 2020-2021学年答案zq.pdf 八年级生物开学摸底考(武汉专用)(答题卡).pdf 2022年盐城市中考化学试卷答案.pdf 云南省德宏州语文四年级下学期期末试题 2020-2021学年.pdf 云南省德宏州数学四年级下学期期末试题 2020-2021学年.pdf 云南省德宏州数学五年级下学期期末试题 2020-2021学年数学答案zq.pdf 八年级生物开学摸底考(福建专用)(答题卡).pdf 八年级生物开学摸底考(全国通用)(答题卡).pdf 八年级生物开学摸底考(广西专用)(答题卡).pdf 八年级生物开学摸底考(广州专用)(答题卡).pdf 云南省昆明市盘龙区数学四年级第二学期期末考试 2020-2021学年.pdf 云南省昆明市盘龙区语文二年级第二学期期末考试 2020-2021学年(人教部编版无答案PDF).pdf
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.