标题:控制问题
只看楼主
weizheng
Rank: 1
等 级:新手上路
威 望:2
帖 子:286
专家分:0
注 册:2005-4-21
 问题点数:0 回复次数:3 
控制问题
在工程文件中如何实现既用鼠标控制又用键盘控制
搜索更多相关主题的帖子: 控制问题 
2005-06-09 16:12
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
得分:0 
#include <dos.h>
#include <stdlib.h>
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
REGS regs;
int init_mouse(int x_min,int x_max,int y_min,int y_max);
int read_mouse(int *x0,int *y0,int *butter);
void mouse(int x0,int y0,int color);
void main()
 {
  int gdriver,gmode;
  gdriver=DETECT;
  initgraph(&gdriver,&gmode,"");
  setbkcolor(BLUE);
  setcolor(RED);
  if((init_mouse(2,638,2,478))==0)
   {
 outtextxy(300,230,"Can't init the Mouse!");
 exit(1);
   }
  int x=0,y=0,butter=0;
  setwritemode(XOR_PUT);
  while(!kbhit())
   {
 read_mouse(&x,&y,&butter);
   }
  closegraph();
  printf("a");
 }
int init_mouse(int x_min,int x_max,int y_min,int y_max)
 {
  int recode;
  regs.x.ax=0;
  int86(0x33,&regs,&regs);
  recode=regs.x.ax;
  if(recode==0)
   return 0;
  regs.x.ax=7;
  regs.x.cx=x_min;
  regs.x.dx=x_max;
  int86(0x33,&regs,&regs);
  regs.x.ax=8;
  regs.x.cx=y_min;
  regs.x.dx=y_max;
  int86(0x33,&regs,&regs);
  return recode;
 }
int read_mouse(int *x0,int *y0,int *butter)
 {
  int x1,y1,butter1;
  int oldx,oldy;
  char str[20];
  do
   {
 regs.x.ax=3;
 int86(0x33,&regs,&regs);
 x1=regs.x.cx;
 y1=regs.x.dx;
 butter1=regs.x.bx;
   }while((x1==*x0)&&(y1==*y0)&&(butter1==*butter));
   mouse(*x0,*y0,YELLOW);
   oldx=*x0;oldy=*y0;//oldbutter=*butter;
   *x0=x1,*y0=y1,*butter=butter1;
   mouse(*x0,*y0,YELLOW);
   if(*butter==1)
 {
  setcolor(RED);
  line(oldx,oldy,x1,y1);
 }
   setcolor(BLUE);
   bar(0,0,100,10);
   sprintf(str,"%d,%d",x1,y1);
   outtextxy(0,0,str);
  return 0;
 }
void mouse(int x0,int y0,int color)
 {
  setcolor(color);
  line(x0-3,y0,x0+3,y0);
  line(x0,y0-3,x0,y0+3);
 }
/*
鼠标操作感悟:
    首先,进行鼠标驱动的安装,在成功安装鼠标驱动以后,这时候鼠标已经指向了屏幕上的一个默认
的位置,但不会显示,当这时你移动鼠标时,也会有变化,不过因为你没有在程序中显示鼠标的位置,
所以也就看不出来了;然后就是设置鼠标的X,Y轴的最大最小值,使鼠标不会指向超过这个范围的屏幕的位置;最后判断这时鼠标的状态用来和上次的鼠标状态计较看不同,然后做相应的处理。
*/

差点把你忘了...
2005-06-09 16:29
weizheng
Rank: 1
等 级:新手上路
威 望:2
帖 子:286
专家分:0
注 册:2005-4-21
得分:0 
谢谢

温和如玉,完美纯正。
2005-06-09 16:39
weizheng
Rank: 1
等 级:新手上路
威 望:2
帖 子:286
专家分:0
注 册:2005-4-21
得分:0 
怎么那么多错误啊!!!老大

[此贴子已经被作者于2005-6-9 16:52:59编辑过]



温和如玉,完美纯正。
2005-06-09 16:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-20481-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.139677 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved