I am using the following code to trap left/right/middle mouse button and mouse row/column in Microsoft QuickBasic 4.5 and I need a way to detect the mouse wheel. I have looked at Ralf Brown's Interrupt List without luck.
The code requires the library QB.QLB.
DECLARE SUB Mouse.Function (Var1!, Var2!)
DIM SHARED MouseX AS INTEGER, MouseY AS INTEGER
TYPE RegTypeX
AX AS INTEGER
BX AS INTEGER
CX AS INTEGER
DX AS INTEGER
BP AS INTEGER
SI AS INTEGER
DI AS INTEGER
Flags AS INTEGER
DS AS INTEGER
ES AS INTEGER
END TYPE
COMMON SHARED InregsX AS RegTypeX
COMMON SHARED OutregsX AS RegTypeX
DECLARE SUB InterruptX (N AS INTEGER, I AS RegTypeX, O AS RegTypeX)
CALL Mouse.Function(0, 0) ' init mouse
CALL Mouse.Function(1, 0) ' show mouse
DO
IF LEN(INKEY$) THEN
CALL Mouse.Function(2, 0) ' hide mouse
EXIT DO
END IF
CALL Mouse.Function(3, 0)
Var2 = INT((OutregsX.CX - 1) / 8 + 1)
Var3 = INT((OutregsX.DX - 1) / 8 + 1)
IF Var3 <> Mouse.Row OR Var2 <> Mouse.Column THEN
CALL Mouse.Function(2, 0) ' hide mouse
Mouse.Row = Var3
Mouse.Column = Var2
PRINT Mouse.Row, Mouse.Column
CALL Mouse.Function(1, 0) ' show mouse
END IF
Mouse.Button = False
CALL Mouse.Function(5, 0)
IF (OutregsX.AX AND 1) = 1 THEN
IF OutregsX.BX > False THEN
Mouse.Button = -1
PRINT "Left-Click"
END IF
END IF
Mouse.Button2 = False
CALL Mouse.Function(5, 1)
IF (OutregsX.AX AND 2) = 2 THEN
IF OutregsX.BX > False THEN
Mouse.Button2 = -1
PRINT "Right-Click"
END IF
END IF
Mouse.Button3 = False
CALL Mouse.Function(5, 2)
IF (OutregsX.AX AND 4) = 4 THEN
IF OutregsX.BX > False THEN
Mouse.Button3 = -1
PRINT "Middle-Click"
END IF
END IF
LOOP
END
SUB Mouse.Function (Var1, Var2)
InregsX.AX = Var1
InregsX.BX = Var2
CALL InterruptX(&H33, InregsX, OutregsX)
END SUB
Any ideas?
I recently tried the following code to detect mousewheel in dosbox:
CALL Mouse.Function(5, -1)
Mouse.Wheel = 0
' check mousewheel in BX
Wheel = OutregsX.BX
IF Wheel THEN
Mouse.Wheel = -1
PRINT "MouseWheel"
CALL Mouse.Function(0, 0)
END IF
this does not return anything.