Mouse Routine

If you have questions about any aspect of QBasic programming, or would like to help fellow programmers solve their problems, check out this board!

Moderators: Pete, Mods

Post Reply
User avatar
qbasicfreak
Veteran
Posts: 90
Joined: Wed Oct 22, 2008 3:27 pm
Location: canada

Mouse Routine

Post by qbasicfreak » Thu Feb 25, 2010 3:19 pm

I'm looking for a mouse routine for my qmunication program. What is the best, and preferably easiest mouse routine to set up and use?

Thanks
Qbasicfreak

User avatar
burger2227
Veteran
Posts: 2220
Joined: Mon Aug 21, 2006 12:40 am
Location: Pittsburgh, PA

Post by burger2227 » Thu Feb 25, 2010 3:36 pm

Use an ABSOLUTE routine if you want compatiblity with QBASIC. Quickbasic can use Interrupt also, but programs must use the library.

QB64 offers a simple mouse routine, but does not allow some functions that Absolute or Interrupt can offer like moving the mouse cursor or limiting the mouse area.

Here is a simpler way to use Absolute mouse:

Code: Select all

DEFINT A-Z
DIM a(10) AS LONG, x1 AS SINGLE
a(0) = &H8BE58955
a(1) = &H33CD0C46
a(2) = &H890A768B
a(3) = &H8768B1C
a(4) = &H768B0C89
a(5) = &H5D148906
a(6) = &H8CA
a(7) = &H8EA800B8
a(8) = &H31FF31C0
a(9) = &H36B0B9C0
a(10) = &HCBABF3
DEF SEG = VARSEG(a(0))
k = 1
SCREEN 9, , 1, 0
CALL absolute(BYVAL 2, mb, mx, my, VARPTR(a(0)))
DO
t! = TIMER + .04
CALL absolute(BYVAL 3, mb, mx, my, VARPTR(a(0)))
x1 = (mx - 320) * .01 - .4
CALL absolute(VARPTR(a(7)))
k = k XOR 3
m1! = SIN(l * .001) * 1000
FOR j = 3 TO 50 STEP 2
z = 700 \ (j - k)
FOR i = 0 TO 8
IF l < 32767 THEN l = l + 1 ELSE l = 0
m! = SIN(l * .001) * 1000 - m1!
x = COS(i * .4 + x1 - m! * .007) * z
y = SIN(i * .4 + x1 - m! * .007) * z
LINE -(x + 300 + m!, y + 100 + m!), i <> 0 * -15
NEXT
NEXT
PCOPY 1, 0
1 IF TIMER < t! THEN 1
LOOP UNTIL INP(&H60) = 1
SYSTEM                       'code by Ben
Ted
Please acknowledge and thank members who answer your questions!
QB64 is a FREE QBasic compiler for WIN, MAC(OSX) and LINUX : https://www.qb64.org/forum/index.php
Get my Q-Basics demonstrator: https://www.dropbox.com/s/fdmgp91d6h8ps ... s.zip?dl=0

User avatar
qbasicfreak
Veteran
Posts: 90
Joined: Wed Oct 22, 2008 3:27 pm
Location: canada

Post by qbasicfreak » Sat Feb 27, 2010 7:03 am

Thanks!
Qbasicfreak

veganaiZe
Newbie
Posts: 1
Joined: Mon Mar 09, 2015 7:00 pm

Re: Mouse Routine

Post by veganaiZe » Mon Mar 09, 2015 7:14 pm

I have made a QBasic SUB called "mouse" that I consider to be "the best and easiest mouse routine to setup and use". It is documented here:
http://staticchaos.awardspace.com/basic/qbmouse.php

It sets up a minimal block of machine language (fully commented) and is accessed via CALL ABSOLUTE(ax, bx, cx, dx, offset%). It mimics the first 4 sub-functions of DOS INT 33h and is a good resource for anyone who wants a simple, yet effective mouse routine for QBasic or QuickBasic. I think it is especially valuable for someone who wants to be able to actually understand what the code is doing as well.

Post Reply