BBS: Inland Empire Archive Date: 02-08-93 (06:22) Number: 275 From: MARK BUTLER Refer#: NONE To: GREG DINERT Recvd: NO Subj: Mouse? Conf: (2) Quik_Bas
Once upon a time Greg Dinert uttered these sage words to All: GD> How do you make a program in QuickBasic that uses a mouse? GD> What does it look like? Or can't you? Please help! The following snippet was graciously contributed by the former moderator of this conference Chris Wagner. I think this is exactly what you are looking for.... ==========================8< Cut Here 8<============================= '*** "Mouse Tester" by Chris Wagner '*** REM $INCLUDE: 'QB.BI' '*** use QBX.BI in PDS7 DECLARE SUB Mouseon () DECLARE SUB MouseOff () DECLARE SUB MouseSetHor (Min%, Max%) DECLARE SUB MouseSetVert (Min%, Max%) DECLARE SUB MouseLocate (Xpos%, Ypos%) DECLARE SUB MouseStatus (Vert%, Hor%, Mbuttons$) DECLARE FUNCTION MouseInstalled% () DIM SHARED RegX AS RegTypeX CLS LOCATE 2, 20: PRINT "Mouse Tester By Chris Wagner"; LOCATE 4, 20 IF MouseInstalled% THEN PRINT "Mouse found and reset." ELSE PRINT "Mouse not found." END END IF LOCATE 14, 30: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"; LOCATE 15, 30: PRINT "º Press Q to Quit º"; LOCATE 16, 30: PRINT "º or Click here º"; LOCATE 17, 30: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"; CALL MouseSetHor(1, 80) CALL MouseSetVert(1, 25) CALL MouseLocate(20, 70) CALL Mouseon LOCATE 25, 1: PRINT "X Coord: Y Coord: "; DO CALL MouseStatus(Vert%, Hor%, Mbuttons$) LOCATE 25, 10: PRINT LTRIM$(STR$(Vert%)); " "; LOCATE 25, 26: PRINT LTRIM$(STR$(Hor%)); " "; LOCATE 25, 48: PRINT Mbuttons$; A$ = UCASE$(INKEY$) IF Mbuttons$ = "L " OR A$ = "Q" THEN IF Vert% >= 14 AND Vert% <= 17 OR A$ = "Q" THEN IF Hor% >= 30 AND Hor% <= 52 OR A$ = "Q" THEN MouseOff CLS SYSTEM END IF END IF END IF LOOP '====[ EOF ]==== FUNCTION MouseInstalled% DEF SEG = 0 MouseSeg& = 256& * PEEK(207) + PEEK(206) MouseOfs& = 256& * PEEK(205) + PEEK(204) + 2 DEF SEG = MouseSeg& IF (MouseSeg& = 0 AND MouseOfs& = 0) OR PEEK(MouseOfs&) = 207 THEN MouseInstalled% = 0 EXIT FUNCTION ELSE MouseInstalled% = -1 END IF DEF SEG RegX.ax = 0 CALL INTERRUPTX(&H33, RegX, RegX) IF RegX.ax = -1 THEN MouseInstalled% = -1 ELSE MouseInstalled% = 0 END IF END FUNCTION SUB MouseLocate (Xpos%, Ypos%) RegX.dx = (Xpos% * 8) - 1 RegX.cx = (Ypos% * 8) - 1 RegX.ax = 4 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseOff RegX.ax = 2 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB Mouseon RegX.ax = 1 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseSetHor (Min%, Max%) RegX.cx = (Min% * 8) - 1 RegX.dx = (Max% * 8) - 1 RegX.ax = 7 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseSetVert (Min%, Max%) RegX.cx = (Min% * 8) - 1 RegX.dx = (Max% * 8) - 1 RegX.ax = 8 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseStatus (Vert%, Hor%, Mbuttons$) RegX.ax = 3 CALL INTERRUPTX(&H33, RegX, RegX) Vert% = (RegX.dx / 8) + 1 Hor% = (RegX.cx / 8) + 1 SELECT CASE RegX.bx CASE 0 Mbuttons$ = " " CASE 1 Mbuttons$ = "L " CASE 2 Mbuttons$ = " R" CASE 3 Mbuttons$ = "L R" CASE 4 Mbuttons$ = " C " END SELECT END SUB ==========================8< Cut Here 8<============================= Hope this helps :-) úùþ[-M-H-B-]þùú --- timEd/B7 * Don't hate yourself in the morning, sleep till noon! * Origin: Terminal Oasis, Portland OR (1:105/330.5)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET