当前位置: 代码迷 >> C语言 >> 控制问题
  详细解决方案

控制问题

热度:293   发布时间:2005-06-09 16:12:00.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-6-9 16:52:59编辑过]



----------------解决方案--------------------------------------------------------
  相关解决方案