



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言的鼠标操作函数集 #include#include#include#includeunion REGS regs;int X_max,Y_max,x_max,y_max;void Initgr(void) /*屏幕初始化成图形模式*/int w,h,grdriver=DETECT,grmode;registerbgidriver(EGAVGA_driver);initgraph(&grdriver,&grmode,);/*在双引号中可加你tc放的路径,但要在tc里有EGAVGA.BGI这个来初始图形*/if(graphresult()/*若调用不成功,退出*/printf(n 调用失败!n);exit(1);X_max=getmaxx();/*求横向象点坐标数*/Y_max=getmaxy();/*求纵向象点坐标数*/getaspectratio(&w,&h);/*求纵横比*/x_max=1000; /*设置屏幕坐标的宽度*/y_max=x_max*(float)Y_max*h/(float)X_max*w); int Msinit(int Xlo,int Xhi,int Ylo,int Yhi)/*鼠标初始化*/int retcode;regs.x.ax=0;/*初始化鼠标*/int86(0x33,s,s);retcode=regs.x.ax;if(retcode=0) return 0;regs.x.ax=7;/*设置鼠标X方向的移动范围*/regs.x.cx=Xlo;regs.x.dx=Xhi;int86(0x33,s,s);regs.x.ax=8;/*设置鼠标Y方向的移动范围*/regs.x.cx=Ylo;regs.x.dx=Yhi;int86(0x33,s,s);regs.x.ax=15;/*设置mickey与象素的比,这各会影响鼠标移动速度*/regs.x.cx=(int)(x_max/X_max);regs.x.dx=(int)(y_max/Y_max);int86(0x33,s,s);return retcode;int Msread(int *px,int *py,int *pbuttons)/*读鼠标位置及状态*/static int x0=320,y0=240,but0=0;int xnew,ynew,ch;doif(kbhit()ch=getch();if(ch=13)*pbuttons=1;return -1;else return ch; /*返回键盘输入*/regs.x.ax=3; /*调用功能3,读鼠标位置及状态*/int86(0x33,s,s);xnew=regs.x.cx;/*返回鼠标当前的位置的X坐标*/ynew=regs.x.dx;/*返回鼠标当前的位置的Y坐标*/*pbuttons=regs.x.bx;/*返回鼠标当前的状态*/while(xnew=x0&ynew=y0&*pbuttons=but0);/*当鼠标状态改变或位置改变终止循环*/but0=*pbuttons;/*将鼠标状态保存到静态变量中*/x0=xnew;y0=ynew;/*将鼠标位置保存到静态变量中*/*px=xnew;*py=(int)(y_max-ynew);return -1;int Xpixel(int x)/*由象素坐标变换为屏幕坐标*/ return (int)(long)X_max*x/x_max);int Ypixel(int y) return Y_max-(int)(long)Y_max*y/y_max);void Cursor(int x,int y) /*显示十字光标*/int X=Xpixel(x),Y=Ypixel(y),color;char *str= 0;line(X-8,Y,X-3,Y);line(X,Y-8,X,Y-4);line(X+3,Y,X+8,Y);line(X,Y+4,X,Y+8);color=getcolor();setcolor(BLACK);outtextxy(X_max-100,10,str);/*删除前次显示值*/sprintf(str,%d,%d,x,y);setcolor(WHITE);outtextxy(X_max-100,10,str);/*在屏幕右上角显示当前光标的坐标*/setcolor(color);Void main()int buttons,X,Y,x,y,a,b;char i;Initgr();/*初始化图形屏幕*/setcolor(EGA_LIGHTRED);/*设置屏幕前景色*/line(1,1,X_max-1,1); /*在屏幕四周画一矩形*/line(1,1,1,Y_max-1);line(X_max-1,1,X_max-1,Y_max-1);line(1,Y_max-1,X_max-1,Y_max-1);setcolor(EGA_WHITE);printf(没n 按鼠标右键终止程序n);printf( 然后按任意键退出);setwritemode(XOR_PUT);/*设置屏幕输出模式*/Msinit(0,(int)x_max,0,(int)y_max);/*初始化鼠标*/a=x_max;b=y_max;x=0;Cursor(a,b); /*在a=x_max;b=y_max;处画指针*/while(x!=2)Msread(&X,&Y,&x);Cursor(a,b); /*删除之前的鼠标,因为屏幕输出模式的关系*/if(x=1)a=(int)(X*1.0/x_max*X_max);b=(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市延安实验初级中学2026届九年级化学第一学期期中综合测试试题含解析
- 防城港边境劳动合同3篇
- 教师招聘之《小学教师招聘》能力提升试题打印及参考答案详解(突破训练)
- 教师招聘之《小学教师招聘》试题预测试卷含答案详解(培优)
- 二人合伙投资协议书范本与二人合伙经营公司合同协议书4篇
- 生物竞赛全国试题及答案
- 电动托盘搬运车考试试题及答案
- 2025年教师招聘之《小学教师招聘》题库必刷100题及参考答案详解(培优a卷)
- 2025年教师招聘之《小学教师招聘》综合提升试卷含答案详解(预热题)
- 2026届安徽省淮南市潘集区九年级化学第一学期期中检测试题含解析
- 焊装工艺学习课件
- 【个人简历】保洁经理求职个人简历模板
- 绵阳东辰学校五升六预备年级招生考试数学试题
- 隧道消防维护维修及专项工程技术文件
- GB/T 15856.2-2002十字槽沉头自钻自攻螺钉
- 插花艺术发展简史
- 学校防溺水“七不两会”教育(课堂)课件
- 《科学思维与科学方法论》第一章 科学问题与科研选题
- 火电厂工作原理课件
- (完整版)电除颤操作评分标准
- 跌倒坠床不良事件鱼骨图分析
评论
0/150
提交评论