本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
闪耀~!

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:
日志总数:17
评论数量:24
留言数量:0
访问次数:133976
建立时间:2005年9月28日




[C Plus Plus]C 语言下的鼠标编程控制
原创空间

codebee 发表于 2006/3/2 16:15:19

  鼠标的控制可以应用于图形模式和文本模式。在初始图形模型时,首先调用initgraph(),从文本模式切换到图形模式。在初始时,将用到DETECT 宏,它将令initgraph()函数自动选择最高的图形支持模式。关于图形模式请参考其它书籍,这里不是重点。 鼠标的调用是通过调用中断51实现的,而它的状态控制是通过AX寄存器实现的。 中断码 控制字 行为 51  0   初始化鼠标获得其状态 调用:AX = 0 返回: AX = FFFFh 不支持 鼠标                      Ax = 0  支持鼠标 51 1  显示鼠标箭头 调用:AX = 1   返回:空 51 2  隐藏鼠标箭头 调用: AX = 2  返回: 空 51 3  获取鼠标位置和状态  调用:AX = 3  返回: BX = 鼠标状态    值          状态   0     没有按键按下   1     左键按下   2     右键按下   3     中键按下 CX = x 坐标  DX = y 坐标 51 4  设置鼠标位置  调用: AX = 4 CX = x 坐标  DX = y 坐标  返回: 空 51 7  设定x轴移动范围 调用: AX = 7 CX = 最小 x 坐标  DX = 最大 x 坐标  返回: 空 51 8  设定y轴移动范围  调用: AX = 8 CX = 最小 y 坐标  DX = 最大 y 坐标  返回: 空                                                                                     给出两个例子: 例一:  #include<graphics.h>       #include<stdio.h>       #include<conio.h>       #include<dos.h>       union REGS in,out;       int callmouse()       {              in.x.ax=1;              int86(51,&in,&out);              return 1;       }       void mouseposi(int &xpos,int &ypos,int &click)       {               in.x.ax=3;              int86(51,&in,&out);              click=out.x.bx;              xpos=out.x.cx;              ypos=out.x.dx;        }       int mousehide()       {              in.x.ax=2;              int86(51,&in,&out);              return 1;       }      void setposi(int &xpos,int &ypos)      {              in.x.ax=4;             in.x.cx=xpos;             in.x.dx=ypos;             int86(51,&in,&out);      }     int main()      {             int x,y,cl,a,b;             clrscr();             int g=DETECT,m;             initgraph(&g,&m,"c:\tc\bgi");             a=100;             b=400;             setposi(a,b);             callmouse();             do             {                    mouseposi(x,y,cl);                    gotoxy(10,9);                    printf("\n\tMouse Position is: %d,%d",x,y);                    printf("\n\tClick: %d",cl);                    printf("\n\tPress any key to hide the mouse");             }while(!kbhit());             getch();             mousehide();             printf("\n\n\tPress any key to Exit");             getch();     } 例二 #include<graphics.h>         #include<stdio.h>         #include<conio.h>         #include<dos.h>         union REGS in,out;         int callmouse()          {                 in.x.ax=1;                 int86(51,&in,&out);                 return 1;          }         void restrictmouseptr(int x1,int y1,int x2,int y2)          {                 in.x.ax=7;                 in.x.cx=x1;                 in.x.dx=x2;                 int86(51,&in,&out);                 in.x.ax=8;                 in.x.cx=y1;                 in.x.dx=y2;                 int86(51,&in,&out);          }         int main()          {                  int x,y,cl,a,b;                 clrscr();                 int g=DETECT,m;                 initgraph(&g,&m,"c:\tc\bgi");                 rectangle(100,100,550,400);                 callmouse();                 restrictmouseptr(100,100,550,400);                 getch();          }      


阅读全文(3316) | 回复(-1) | 编辑 | 精华
 


回复:C 语言下的鼠标编程控制
原创空间

ad(游客)发表评论于2006/3/15 22:47:53

有语法错误,望改正!!!


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144755738 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号