全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年《江南夜色》说课稿绘画
- 2025-2026学年j解方程说课稿
- 2025-2026学年奥尔夫儿歌节奏说课稿
- 2025-2026学年好片段教学说课稿
- 制粉工复试模拟考核试卷含答案
- 广告合规审查员安全培训效果考核试卷含答案
- 儿童发育指导师岗前实操综合知识考核试卷含答案
- 化学制浆工安全理论能力考核试卷含答案
- 白土补充精制装置操作工创新应用能力考核试卷含答案
- 西式面点师岗位知识水平考核试卷含答案
- 金融管理综合应用案例昌盛餐厅
- 2027届广州市天河区普通高中毕业班适应性训练作文题目解析及范文:长期规划是对未来的研判与谋划
- 长春初中语文九上《短文两篇-孔子世家赞》
- 道路维修验收标准方案
- 煤矿班组长培训课件
- 鱼类育种课件
- 《JBT 7257-2018 行车式提板刮渣刮砂机》(2026年)实施指南
- 福建省泉州市永春第一中学2025-2026学年高二上学期开学考试数学试卷
- 绵阳东辰学校五升六预备年级招生考试数学试题
- 嗜酸性肉芽肿性多血管炎诊治多学科专家共识(2025年版)解读
- 甲亢的中医护理方案
评论
0/150
提交评论