Mouse.h
上传用户:wszmarenbt
上传日期:2013-04-26
资源大小:2552k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //File Mouse.H
  2. #ifndef_MOUSE_H
  3. #define_MOUSE_H
  4. #include <dos.h>
  5. #include <conio.h>
  6. #define LEFT 1
  7. #define RIGHT 2
  8. #define CENTER 3
  9. //The Mouse Class Declaration.
  10. class Mouse
  11. {
  12. private :
  13. int mx,my;
  14. int got_mouse;
  15. int num_buttons;
  16. int button;
  17. REGS inRegs;
  18. REGS outRegs;
  19. public :
  20. Mouse(void);
  21. ~Mouse(void);
  22. int GotMouse(void){return got_mouse;}
  23. void SetLimits(int minXLimit,int maxXLimit,int minYLimit,
  24.   int maxYLimit);
  25. void ShowMouse(void);
  26. void HideMouse(void);
  27. int Event(void);
  28. int GetButton(void){return button;}
  29. void GetXY(int &x,int &y){x=mx;y=my;}
  30. void ButtonUp(void);
  31. };
  32. extern Mouse mouse;
  33. #endif
  34. Mouse::Mouse(void)
  35. {
  36. got_mouse=0;
  37. if (getvect(0x33))
  38. {
  39. inRegs.x.ax=0x0000;
  40. int86(0x33,&inRegs,&outRegs);
  41. got_mouse=outRegs.x.ax;
  42. num_buttons=outRegs.x.bx;
  43. }
  44. }
  45. Mouse::~Mouse(void)
  46. {
  47. inRegs.x.ax=0x0000;
  48. int86(0x33,&inRegs,&outRegs);
  49. }
  50. void Mouse::SetLimits(int minXLimit,int maxXLimit,int minYLimit,int maxYLimit)
  51. {
  52. if (!got_mouse) return;
  53. inRegs.x.ax=0x0007;
  54. inRegs.x.cx=minXLimit;
  55. inRegs.x.dx=maxXLimit;
  56. int86(0x33,&inRegs,&outRegs);
  57. inRegs.x.ax=0x0008;
  58. inRegs.x.cx=minYLimit;
  59. inRegs.x.dx=maxYLimit;
  60. int86(0x33,&inRegs,&outRegs);
  61. }
  62. void Mouse::ShowMouse(void)
  63. {
  64. if (!got_mouse) return;
  65. inRegs.x.ax=0x0001;
  66. int86(0x33,&inRegs,&outRegs);
  67. }
  68. void Mouse::HideMouse(void)
  69. {
  70. if (!got_mouse) return;
  71. inRegs.x.ax=0x0002;
  72. int86(0x33,&inRegs,&outRegs);
  73. }
  74. int Mouse::Event(void)
  75. {
  76. if (!got_mouse) return 0;
  77. inRegs.x.ax=0x0003;
  78. int86(0x33,&inRegs,&outRegs);
  79. button=outRegs.x.bx;
  80. mx=outRegs.x.cx;
  81. my=outRegs.x.dx;
  82. if (button) return 1;
  83. else return 0;
  84. }
  85. void Mouse::ButtonUp(void)
  86. {
  87. while (button) Event();
  88. }