home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / PASCAL / RODENT_3.ZIP / QBRODENT.BAS next >
BASIC Source File  |  1989-12-16  |  4KB  |  138 lines

  1. '****************************************************************'
  2. '*                  qbrodent.bas                                *'
  3. '*                                                              *'
  4. '*  Demo program to show how to define a mouse graphics cursor  *'
  5. '*                                                              *'
  6. '*  Written in Microsoft QuickBasic version 4.50                *'
  7. '*                                                              *'
  8. '*  Hardware req'ts :  CGA, EGA, or VGA monitor                 *'
  9. '*                     Microsoft-compatible mouse               *'
  10. '****************************************************************'
  11.  
  12. DECLARE SUB Mouse (Funcode%, Result%, P2%, P3%, P4%)
  13. DECLARE SUB ShowButton (ScreenLoc%, Condition%)
  14. '$INCLUDE: 'QB.BI'
  15.  
  16. DEFINT A-Z 'All we need is integers
  17.  
  18. CONST MInit = 0
  19. CONST ShowCur = 1
  20. CONST HideCur = 2
  21. CONST MStatus = 3
  22. CONST SetCursor = 9
  23. CONST FALSE = 0, TRUE = NOT FALSE
  24.  
  25. DIM SHARED Regs AS RegType
  26. DIM Mcursor AS STRING
  27.  
  28.  
  29. ' Data for an hourglass-shaped mouse cursor
  30.  
  31. ' Screen mask; ANDed with screen
  32. DATA &H0001: REM  0000000000000001
  33. DATA &H0001: REM  0000000000000001
  34. DATA &H8003: REM  1000000000000011
  35. DATA &HC7C7: REM  1100011111000111
  36. DATA &HE38F: REM  1110001110001111
  37. DATA &HF11F: REM  1111000100011111
  38. DATA &HF83F: REM  1111100000111111
  39. DATA &HFC7F: REM  1111110001111111
  40. DATA &HF83F: REM  1111100000111111
  41. DATA &HF11F: REM  1111000100011111
  42. DATA &HE38F: REM  1110001110001111
  43. DATA &HC7C7: REM  1100011111000111
  44. DATA &H8003: REM  1000000000000011
  45. DATA &H0001: REM  0000000000000001
  46. DATA &H0001: REM  0000000000000001
  47. DATA &H0000: REM  0000000000000000
  48.  
  49. ' Cursor mask; XORed with screen
  50.  
  51. DATA &H0000: REM  0000000000000000
  52. DATA &H7FFC: REM  0111111111111100
  53. DATA &H2008: REM  0010000000001000
  54. DATA &H1010: REM  0001000000010000
  55. DATA &H0820: REM  0000100000100000
  56. DATA &H0440: REM  0000010001000000
  57. DATA &H0280: REM  0000001010000000
  58. DATA &H0100: REM  0000000100000000
  59. DATA &H0280: REM  0000001010000000
  60. DATA &H0440: REM  0000010001000000
  61. DATA &H0820: REM  0000100000100000
  62. DATA &H1010: REM  0001000000010000
  63. DATA &H2008: REM  0010000000001000
  64. DATA &H7FFC: REM  0111111111111100
  65. DATA &H0000: REM  0000000000000000
  66. DATA &H0000: REM  0000000000000000
  67.  
  68. ' Build the cursor as a string
  69. Mcursor = ""
  70. FOR i = 1 TO 32
  71.   READ w
  72.   Mcursor = Mcursor + MKI$(w)
  73. NEXT i
  74.  
  75. SCREEN 2
  76. Mouse MInit, Result, Buttons, 0, 0 'Initialize mouse driver
  77. IF NOT Result THEN
  78.   SCREEN 0
  79.   PRINT "No mouse detected."
  80.   END
  81. END IF
  82.  
  83. IF Buttons = 3 THEN RightButton = 42 ELSE RightButton = 35
  84. LOCATE 1, 1
  85. PRINT "╔════╗                    ┌───┐  ┌───┐"
  86. PRINT "║Quit║  x = xxx  y = yyy  │   │  │   │"
  87. PRINT "╚════╝                    └───┘  └───┘"
  88. IF Buttons = 3 THEN
  89.   LOCATE 1, RightButton - 1
  90.   PRINT "┌───┐"
  91.   LOCATE 2, RightButton - 1
  92.   PRINT "│   │"
  93.   LOCATE 3, RightButton - 1
  94.   PRINT "└───┘"
  95. END IF
  96.  
  97. 'Set the mouse cursor to the pattern in Mcursor.  The "hotspot" will
  98. 'be set to the center of the hourglass (coordinates 7, 7)
  99. Mouse SetCursor, 0, 7, 7, SADD(Mcursor)'(nothing is returned)
  100. Mouse ShowCur, 0, 0, 0, 0 'Turn mouse cursor on
  101.  
  102. ' Main program loop.  Continue until user clicks in the "Quit" box.
  103. DO
  104.   Mouse MStatus, 0, MouseButton, MouseX, MouseY
  105.   LOCATE 2, 13
  106.   PRINT USING "###"; MouseX
  107.   LOCATE 2, 22
  108.   PRINT USING "###"; MouseY
  109.   ShowButton 28, MouseButton AND 1
  110.   ShowButton RightButton, MouseButton AND 2
  111.   IF Buttons = 3 THEN ShowButton 35, MouseButton AND 4
  112. LOOP UNTIL MouseButton = 1 AND MouseX < 48 AND MouseY < 24
  113.  
  114. Mouse HideCur, 0, 0, 0, 0
  115. SCREEN 0
  116.  
  117. SUB Mouse (Funcode, Result, P2, P3, P4)
  118. Regs.ax = Funcode
  119. Regs.bx = P2
  120. Regs.cx = P3
  121. Regs.dx = P4
  122. INTERRUPT &H33, Regs, Regs
  123. Result = Regs.ax
  124. P2 = Regs.bx
  125. P3 = Regs.cx
  126. P4 = Regs.dx
  127. END SUB
  128.  
  129. SUB ShowButton (ScreenLoc, Condition)
  130. LOCATE 2, ScreenLoc
  131. IF Condition THEN
  132.   PRINT "███";
  133. ELSE
  134.   PRINT "   ";
  135. END IF
  136. END SUB
  137.  
  138.