home *** CD-ROM | disk | FTP | other *** search
- '****************************************************************'
- '* qbrodent.bas *'
- '* *'
- '* Demo program to show how to define a mouse graphics cursor *'
- '* *'
- '* Written in Microsoft QuickBasic version 4.50 *'
- '* *'
- '* Hardware req'ts : CGA, EGA, or VGA monitor *'
- '* Microsoft-compatible mouse *'
- '****************************************************************'
-
- DECLARE SUB Mouse (Funcode%, Result%, P2%, P3%, P4%)
- DECLARE SUB ShowButton (ScreenLoc%, Condition%)
- '$INCLUDE: 'QB.BI'
-
- DEFINT A-Z 'All we need is integers
-
- CONST MInit = 0
- CONST ShowCur = 1
- CONST HideCur = 2
- CONST MStatus = 3
- CONST SetCursor = 9
- CONST FALSE = 0, TRUE = NOT FALSE
-
- DIM SHARED Regs AS RegType
- DIM Mcursor AS STRING
-
-
- ' Data for an hourglass-shaped mouse cursor
-
- ' Screen mask; ANDed with screen
- DATA &H0001: REM 0000000000000001
- DATA &H0001: REM 0000000000000001
- DATA &H8003: REM 1000000000000011
- DATA &HC7C7: REM 1100011111000111
- DATA &HE38F: REM 1110001110001111
- DATA &HF11F: REM 1111000100011111
- DATA &HF83F: REM 1111100000111111
- DATA &HFC7F: REM 1111110001111111
- DATA &HF83F: REM 1111100000111111
- DATA &HF11F: REM 1111000100011111
- DATA &HE38F: REM 1110001110001111
- DATA &HC7C7: REM 1100011111000111
- DATA &H8003: REM 1000000000000011
- DATA &H0001: REM 0000000000000001
- DATA &H0001: REM 0000000000000001
- DATA &H0000: REM 0000000000000000
-
- ' Cursor mask; XORed with screen
-
- DATA &H0000: REM 0000000000000000
- DATA &H7FFC: REM 0111111111111100
- DATA &H2008: REM 0010000000001000
- DATA &H1010: REM 0001000000010000
- DATA &H0820: REM 0000100000100000
- DATA &H0440: REM 0000010001000000
- DATA &H0280: REM 0000001010000000
- DATA &H0100: REM 0000000100000000
- DATA &H0280: REM 0000001010000000
- DATA &H0440: REM 0000010001000000
- DATA &H0820: REM 0000100000100000
- DATA &H1010: REM 0001000000010000
- DATA &H2008: REM 0010000000001000
- DATA &H7FFC: REM 0111111111111100
- DATA &H0000: REM 0000000000000000
- DATA &H0000: REM 0000000000000000
-
- ' Build the cursor as a string
- Mcursor = ""
- FOR i = 1 TO 32
- READ w
- Mcursor = Mcursor + MKI$(w)
- NEXT i
-
- SCREEN 2
- Mouse MInit, Result, Buttons, 0, 0 'Initialize mouse driver
- IF NOT Result THEN
- SCREEN 0
- PRINT "No mouse detected."
- END
- END IF
-
- IF Buttons = 3 THEN RightButton = 42 ELSE RightButton = 35
- LOCATE 1, 1
- PRINT "╔════╗ ┌───┐ ┌───┐"
- PRINT "║Quit║ x = xxx y = yyy │ │ │ │"
- PRINT "╚════╝ └───┘ └───┘"
- IF Buttons = 3 THEN
- LOCATE 1, RightButton - 1
- PRINT "┌───┐"
- LOCATE 2, RightButton - 1
- PRINT "│ │"
- LOCATE 3, RightButton - 1
- PRINT "└───┘"
- END IF
-
- 'Set the mouse cursor to the pattern in Mcursor. The "hotspot" will
- 'be set to the center of the hourglass (coordinates 7, 7)
- Mouse SetCursor, 0, 7, 7, SADD(Mcursor)'(nothing is returned)
- Mouse ShowCur, 0, 0, 0, 0 'Turn mouse cursor on
-
- ' Main program loop. Continue until user clicks in the "Quit" box.
- DO
- Mouse MStatus, 0, MouseButton, MouseX, MouseY
- LOCATE 2, 13
- PRINT USING "###"; MouseX
- LOCATE 2, 22
- PRINT USING "###"; MouseY
- ShowButton 28, MouseButton AND 1
- ShowButton RightButton, MouseButton AND 2
- IF Buttons = 3 THEN ShowButton 35, MouseButton AND 4
- LOOP UNTIL MouseButton = 1 AND MouseX < 48 AND MouseY < 24
-
- Mouse HideCur, 0, 0, 0, 0
- SCREEN 0
-
- SUB Mouse (Funcode, Result, P2, P3, P4)
- Regs.ax = Funcode
- Regs.bx = P2
- Regs.cx = P3
- Regs.dx = P4
- INTERRUPT &H33, Regs, Regs
- Result = Regs.ax
- P2 = Regs.bx
- P3 = Regs.cx
- P4 = Regs.dx
- END SUB
-
- SUB ShowButton (ScreenLoc, Condition)
- LOCATE 2, ScreenLoc
- IF Condition THEN
- PRINT "███";
- ELSE
- PRINT " ";
- END IF
- END SUB
-