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 >
Wrap
BASIC Source File
|
1989-12-16
|
4KB
|
138 lines
'****************************************************************'
'* 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