Microsoft KB Archive/40951

= How to Poll MOUSE(0) to Detect Single, Double, Triple Click =

Article ID: 40951

Article Last Modified on 1/8/2003

-

APPLIES TO


 * Microsoft QuickBasic Compiler for Macintosh 1.0

-



This article was previously published under Q40951



SUMMARY
Mouse programming is very dependent on timing between mouse clicks. The System Control Panel is used to set the current mouse click timing rate.

This article contains a sample program that shows how to poll the MOUSE(0) function in a loop. The program detects single, double, and triple clicks in Macintosh QuickBASIC Version 1.00, BASIC Compiler Version 1.00, and BASIC Interpreter for the Macintosh Versions 2.00, 2.10, and 3.00.

The following is a code example: PRINT &quot;Click in right window border to quit&quot; WHILE x < 490  ' Quits if you click beyond 490 pixels to right. WHILE MOUSE(0)=0 : WEND  ' Wait for mouse button to go down. GOSUB delay  ' Delay long enough for user to triple click. waitup: buttonstatus=MOUSE(0) ' Read current mouse status. x=MOUSE(1)  ' Returns X coordinate of mouse. IF buttonstatus < 0 THEN GOTO waitup  ' Avoids down status. PRINT &quot;buttonstatus=&quot;,buttonstatus IF buttonstatus=1 THEN PRINT &quot;Single clicked&quot; IF buttonstatus=2 THEN PRINT &quot;Double clicked&quot; IF buttonstatus=3 THEN PRINT &quot;Triple clicked&quot; WEND END

REM  Please note:   If the mouse is clicked three times at a rate that REM                 nearly exceeds the system time period for a triple REM                 click, the program may report a double and a REM                  triple click.

delay: PRINT &quot;Now waiting for clicking to finish. . .&quot; ' If compiled, then use a longer loop: IF SYSTEM(4) THEN     ' SYSTEM(4) returns &quot;true&quot; if compiled. FOR I=1 TO 7000 : NEXT ELSE ' Use shorter loop if run in interpreter: FOR I=1 TO 1100 : NEXT END IF

REM  The SYSTEM(4) command is not supported in the Macintosh BASIC REM  Interpreter or Compiler products. When using either product, REM  comment the IF...END IF loop and uncomment the loop that follows.

REM  FOR I=1 TO 7000 : NEXT 'Use a shorter loop if run in interpreter

PRINT &quot;. . . time is up.&quot; RETURN Program notes:

The delay loop in this program has different timing on a Mac Plus than it does on a Macintosh II. To make the program behave the same on different Macintosh computers, replace the program's loop with another loop based on calling the ToolBox statement to invoke the TickCount ROM function. (Query on the word &quot;tickcount&quot; in this database for an example of a timer accurate to one-sixtieth of a second).

Additional query words: BasicCom MQuickB

Keywords: KB40951

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.