1.  int  getx(void){message();return x;} //获得鼠标x值  
  2.    int  gety(void){message();return y;} //获得鼠标y值  
  3.    int  getlbx(void){mousekeymessage();return lbx;} //获得鼠标左键按下的x值  
  4.    int  getlby(void){mousekeymessage();return lby;} //获得鼠标左键按下的y值  
  5.    int  getlex(void){mousekeymessage();return lex;} //获得鼠标左键松开的x值  
  6.    int  getley(void){mousekeymessage();return ley;} //获得鼠标左键松开的y值  
  7.    int  getrbx(void){mousekeymessage();return rbx;} //获得鼠标右键按下的x值  
  8.    int  getrby(void){mousekeymessage();return rby;} //获得鼠标右键按下的y值  
  9.    int  getrex(void){mousekeymessage();return rex;} //获得鼠标右键松开的x值  
  10.    int  getrey(void){mousekeymessage();return rey;} //获得鼠标右键松开的y值  
  11.    //获得鼠标左键按下的次数  
  12.    int  getleftnum(void){mousekeymessage();return leftnum;}  
  13.    //获得鼠标右键按下的次数  
  14.    int  getrightnum(void){mousekeymessage();return rightnum;}  
  15.    int  getkey(void){message();return key;} //获得鼠标key值  
  16.    //显示鼠标座标  
  17.    void showxy(void){gotoxy(1,1);cout<<"x="<" y="<" key="<
  18.    int yesno(int,int,int,int);//判断鼠标是否在指定范围  
  19.    void run(void far interrupt(far *p)(),int nn);// 用户鼠标程序的运行  
  20.    void close(void);  //消除用户鼠标程序的运行  
  21.  };  
  22. //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  23. void MOUSE::show_message(void)  
  24.  {  
  25.   cout<<"Mouse num:"<
  26.   cout<<"Mouse form:"<
  27.   cout<<"Mouse showsection:"<","<","<","<
  28.  }  
  29. void MOUSE::init(void)  
  30.  {  
  31.   union REGS r;  
  32.   flag=0;  
  33.   if(getvect(0x33)!=0L)  
  34.    {  r.x.ax=0;  
  35.       int86(0x33,&r,&r);  
  36.       if(r.x.ax==0){cout<<"NOT INSTALLED MOUSE !";exit(0);}  
  37.       if(r.x.ax!=0){  
  38.   flag=1;num=r.x.bx;  
  39.   shape();  
  40.        if(!chart)  
  41.   {  
  42.     r.h.ah=0x0f;  
  43.     int86(0x10,&r,&r);  
  44.     if(r.h.al==0||r.h.al==1)winxsize=16;  
  45.     chart=1;  
  46.       }}  
  47.     }  
  48.  }  
  49. void MOUSE::shape()  
  50.  {  
  51.   if(flag)  
  52.    { _ES=FP_SEG(form->p_w_picpath);  
  53.      _DX=FP_OFF(form->p_w_picpath);  
  54.      _CX=form->y;  
  55.      _BX=form->x;  
  56.      _AX=0x09;  
  57.      geninterrupt(0x33);  
  58.      rx=form->x;  
  59.      ry=form->y;  
  60.    }  
  61. }  
  62. void MOUSE::setshape(int n)  
  63.  {  
  64.   switch (n)  
  65.   {  
  66.    case 0:form=&Mouse0;break;  
  67.    case 1:form=&Mouse1;break;  
  68.    case 2:form=&Mouse2;break;  
  69.    case 3:form=&Mouse3;break;  
  70.    case 4:form=&Mouse4;break;  
  71.    case 5:form=&Mouse5;break;  
  72.    case 6:form=&Mouse6;break;  
  73.    case 7:form=&Mouse7;break;  
  74.    case 8:form=&Mouse8;break;  
  75.    default:break;  
  76.   }  
  77.   shape();  
  78.  }  
  79. inline void MOUSE::show(void)  
  80.  {  
  81.   union REGS r;  
  82.   if(flag)  
  83.   {  
  84.     r.x.ax=1;  
  85.     int86(0x33,&r,&r);  
  86.     FLAG=1;  
  87.   }  
  88.  }  
  89. inline void MOUSE::hide(void)  
  90.  {  
  91.   union REGS r;  
  92.   if((FLAG)&&(flag))  
  93.   {  
  94.     r.x.ax=2;  
  95.     int86(0x33,&r,&r);  
  96.     FLAG=0;  
  97.   }  
  98.  }  
  99. void MOUSE::setbeginxy(int X,int Y)  
  100. {  
  101.   union REGS r;  
  102.   if(flag)  
  103.   {  
  104.    r.x.ax=4;  
  105.    r.x.cx=X;  
  106.    r.x.dx=Y;  
  107.   int86(0x33,&r,&r);  
  108.   x=X;y=Y;  
  109.  }  
  110. }  
  111. inline void MOUSE::message(void)  
  112.  {  
  113.  union REGS r;  
  114.   if(flag)  
  115.   {  
  116.    r.x.ax=3;  
  117.    int86(0x33,&r,&r);  
  118.    key=r.x.bx;  
  119.    KEYKEY=key;  
  120.    x=r.x.cx;  
  121.    y=r.x.dx;  
  122.  }}  
  123. void MOUSE::mousekeymessage(void)  
  124.  {  
  125.  union REGS r;  
  126.   if(flag)  
  127.   {//-----按下-----  
  128.    //左键  
  129.    r.x.ax=5;  
  130.    r.x.bx=0;  
  131.    int86(0x33,&r,&r);  
  132.    key=KEYKEY=r.x.ax;  
  133.    leftnum=r.x.bx;  
  134.    lbx=r.x.cx;  
  135.    lby=r.x.dx;  
  136.    //右键  
  137.    r.x.ax=5;  
  138.    r.x.bx=1;  
  139.    int86(0x33,&r,&r);  
  140.    key=KEYKEY=r.x.ax;  
  141.    rightnum=r.x.bx;  
  142.    rbx=r.x.cx;  
  143.    rby=r.x.dx;  
  144.    //-----松开-----  
  145.    //左键  
  146.    r.x.ax=6;  
  147.    r.x.bx=0;  
  148.    int86(0x33,&r,&r);  
  149.    key=KEYKEY=r.x.ax;  
  150.    lex=r.x.cx;  
  151.    ley=r.x.dx;  
  152.    //右键  
  153.    r.x.ax=6;  
  154.    r.x.bx=1;  
  155.    int86(0x33,&r,&r);  
  156.    key=KEYKEY=r.x.ax;  
  157.    rex=r.x.cx;  
  158.    rey=r.x.dx;  
  159.  }}  
  160. void MOUSE::show_mousekeymessage(void)  
  161.  {  
  162.   gotoxy(10,6);  
  163.   cout<<"Left ("<","<")-("<","<")\n";  
  164.   gotoxy(10,7);  
  165.   cout<<"Right ("<","<")-("<","<")\n";  
  166.  }  
  167. void MOUSE::setmax(int x1,int x2)  
  168. {  
  169.   union REGS r;  
  170.   if(flag)  
  171.   {  
  172.    if(!FLAG)  
  173.     {  
  174.      x1=(x1*winxsize)-winxsize;  
  175.      x2=(x2*winxsize)-winxsize;  
  176.     }  
  177.    r.x.ax=7;  
  178.    r.x.cx=x1;  
  179.    r.x.dx=x2;  
  180.   int86(0x33,&r,&r);  
  181.  }  
  182. }  
  183. void MOUSE::setmay(int y1,int y2)  
  184. {  
  185.   union REGS r;  
  186.   if(flag)  
  187.   {  
  188.    if(!FLAG)  
  189.     {  
  190.      y1=(y1*winysize)-winysize;  
  191.      y2=(y2*winysize)-winysize;  
  192.     }  
  193.    r.x.ax=8;  
  194.    r.x.cx=y1;  
  195.    r.x.dx=y2;  
  196.   int86(0x33,&r,&r);  
  197.  }  
  198. }  
  199. void MOUSE::setmaxy(int x1,int y1,int x2,int y2)  
  200. {  
  201.  union REGS r;  
  202.  if(flag)  
  203.  {  
  204.   r.x.ax=16;  
  205.   r.x.cx=x1;  
  206.   r.x.dx=y1;  
  207.   r.x.si=x2;  
  208.   r.x.di=y2;  
  209.   int86(0x33,&r,&r);  
  210.  }  
  211.  else hide();  
  212. }  
  213. inline int MOUSE::mousekey()  
  214.  {  
  215.    if(kbhit())return KEY();  
  216.     message();  
  217.     if(key==1)  return(1001);  
  218.     if(key==2)  return(1002);  
  219.     if(key==3)  return(1003);  
  220.     return(-1);  
  221. }  
  222. void MOUSE::mousev()  
  223.  {  
  224.   if(flag)  
  225.   {  
  226.     _BX=20;  
  227.     _CX=20;  
  228.     _AX=0x1a;  
  229.    geninterrupt(0x33);  
  230.  }}  
  231. int MOUSE::yesno(int bx,int by,int ex,int ey)  
  232. int t;  
  233.   if(bx>ex){t=bx;bx=ex;ex=t;}  
  234.   if(by>ey){t=by;by=ey;ey=t;}  
  235.   message();  
  236.   if(x>bx&&xby&&yreturn 1;  
  237.    else return 0;  
  238.  }  
  239. void  MOUSE::run(void far interrupt(*p)(),int nn)  
  240.  {  
  241.   if(flag)  
  242.   {  
  243.     _ES=FP_SEG(p);  
  244.     _DX=FP_OFF(p);  
  245.     _CX=nn;  
  246.     _AX=0x14;  
  247.   geninterrupt(0x33);  
  248.   }  
  249.  }  
  250. void MOUSE::close(void)  
  251.  {  
  252.   if(flag)  
  253.   {  
  254.     _ES=0;  
  255.     _DX=0;  
  256.     _CX=0;  
  257.  
  258.     _AX=0x14;  
  259.    geninterrupt(0x33);  
  260.   }  
  261.  
  262. }  
  263. //------------------------------------------------------------------------//  
  264.  

好了,先放这些吧。现在想想如果用DOS做简单的图形界面的嵌入式系统,也许这个也有点用(我刚到公司,做的第一个程序就是用这个改进的(DOS下的物料计量系统))