mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-28 11:17:47 +00:00
92 lines
2.6 KiB
Markdown
92 lines
2.6 KiB
Markdown
The [_MOUSEINPUT](_MOUSEINPUT) function is used to monitor any new mouse positions, button presses or movements of the scroll wheel. Must be called before other mouse information becomes available.
|
|
|
|
## Syntax
|
|
|
|
> infoExists%% = [_MOUSEINPUT](_MOUSEINPUT)
|
|
|
|
## Description
|
|
|
|
* Returns -1 if new mouse information is available, otherwise it returns 0.
|
|
* Must be called before reading any of the other mouse functions. The function will not miss any mouse input even during an [INPUT](INPUT) entry.
|
|
* Use in a loop to monitor the mouse buttons, scroll wheel and coordinate positions.
|
|
* To clear all previous mouse data, use [_MOUSEINPUT](_MOUSEINPUT) in a loop until it returns 0.
|
|
|
|
## Example(s)
|
|
|
|
Mouse coordinate, click and scroll events are returned sequentially inside of a _MOUSEINPUT loop.
|
|
|
|
```vb
|
|
|
|
DO
|
|
DO WHILE _MOUSEINPUT ' Check the mouse status
|
|
PRINT _MOUSEX, _MOUSEY, _MOUSEBUTTON(1), _MOUSEWHEEL
|
|
LOOP
|
|
LOOP UNTIL INKEY$ <> ""
|
|
|
|
```
|
|
|
|
> *Explanation:* The latest mouse function status can be read after the loop. [_LIMIT](_LIMIT) and [_DELAY](_DELAY) loops will slow returns down.
|
|
|
|
How to use a _MOUSEINPUT loop to locate [PSET](PSET) positions on a screen using a right mouse button click.
|
|
|
|
```vb
|
|
|
|
SCREEN 12
|
|
|
|
DO ' main program loop
|
|
|
|
' your program code
|
|
|
|
DO WHILE _MOUSEINPUT'mouse status changes only
|
|
x = _MOUSEX
|
|
y = _MOUSEY
|
|
IF x > 0 AND x < 640 AND y > 0 AND y < 480 THEN
|
|
IF _MOUSEBUTTON(2) THEN
|
|
PSET (x, y), 15
|
|
LOCATE 1, 1: PRINT x, y
|
|
END IF
|
|
END IF
|
|
LOOP
|
|
|
|
' your program code
|
|
|
|
LOOP UNTIL INKEY$ = CHR$(27)
|
|
|
|
```
|
|
|
|
Clearing any mouse data read before or during an [INPUT](INPUT) entry. Press "I" to enter input:
|
|
|
|
```vb
|
|
|
|
PRINT "Press I to enter input! Press Q to quit"
|
|
DO
|
|
K$ = UCASE$(INKEY$)
|
|
DO
|
|
IF _MOUSEBUTTON(1) = -1 THEN PRINT "*" 'indicates a mouse click event
|
|
LOOP WHILE _MOUSEINPUT
|
|
IF K$ = "Q" THEN END
|
|
IF K$ = "I" THEN 'press I to enter text
|
|
INPUT "Click the mouse and enter something: ", entry$ 'enter some text
|
|
GOSUB Clickcheck 'clear mouse data
|
|
END IF
|
|
LOOP
|
|
|
|
END
|
|
|
|
Clickcheck:
|
|
count = 0
|
|
DO
|
|
count = count + 1
|
|
LOOP WHILE _MOUSEINPUT
|
|
PRINT count 'returns the number of loops before mouse data is cleared
|
|
RETURN
|
|
|
|
```
|
|
|
|
> *Explanation:* Click the mouse a few times while entering [INPUT](INPUT) text. When Enter is pressed, the number of loops are displayed.
|
|
|
|
## See Also
|
|
|
|
* [_MOUSEX](_MOUSEX), [_MOUSEY](_MOUSEY), [_MOUSEBUTTON](_MOUSEBUTTON), [_MOUSEWHEEL](_MOUSEWHEEL)
|
|
* [_MOUSESHOW](_MOUSESHOW), [_MOUSEHIDE](_MOUSEHIDE), [_MOUSEMOVE](_MOUSEMOVE)
|
|
* [Controller Devices](Controller-Devices)
|