mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-01 18:40:17 +00:00
87 lines
No EOL
3.4 KiB
Text
87 lines
No EOL
3.4 KiB
Text
{{DISPLAYTITLE:_MOUSEINPUT}}
|
|
The [[_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.
|
|
|
|
|
|
{{PageSyntax}}
|
|
:{{Parameter|infoExists%%}} = [[_MOUSEINPUT]]
|
|
|
|
|
|
{{PageDescription}}
|
|
* 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]] entry.
|
|
* Use in a loop to monitor the mouse buttons, scroll wheel and coordinate positions.
|
|
* To clear all previous mouse data, use [[_MOUSEINPUT]] in a loop until it returns 0.
|
|
|
|
|
|
{{PageExamples}}
|
|
''Example 1:'' Mouse coordinate, click and scroll events are returned sequentially inside of a _MOUSEINPUT loop.
|
|
{{CodeStart}} '' ''
|
|
DO
|
|
{{Cl|DO...LOOP|DO}} {{Cl|WHILE}} {{Cl|_MOUSEINPUT}} ' Check the mouse status
|
|
{{Cl|PRINT}} {{Cl|_MOUSEX}}, {{Cl|_MOUSEY}}, {{Cl|_MOUSEBUTTON}}(1), {{Cl|_MOUSEWHEEL}}
|
|
{{Cl|LOOP}}
|
|
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} <> "" '' ''
|
|
{{CodeEnd}}
|
|
: ''Explanation:'' The latest mouse function status can be read after the loop. [[_LIMIT]] and [[_DELAY]] loops will slow returns down.
|
|
|
|
|
|
''Example 2:'' How to use a _MOUSEINPUT loop to locate [[PSET]] positions on a screen using a right mouse button click.
|
|
{{CodeStart}} '' ''
|
|
{{Cl|SCREEN}} 12
|
|
|
|
{{Cl|DO...LOOP|DO}} ' main program loop
|
|
|
|
' your program code
|
|
|
|
{{Cl|DO...LOOP|DO}} {{Cl|WHILE}} {{Cl|_MOUSEINPUT}}'mouse status changes only
|
|
x = {{Cl|_MOUSEX}}
|
|
y = {{Cl|_MOUSEY}}
|
|
{{Cl|IF...THEN|IF}} x > 0 {{Cl|AND (boolean)|AND}} x < 640 {{Cl|AND (boolean)|AND}} y > 0 {{Cl|AND (boolean)|AND}} y < 480 {{Cl|THEN}}
|
|
{{Cl|IF...THEN|IF}} {{Cl|_MOUSEBUTTON}}(2) {{Cl|THEN}}
|
|
{{Cl|PSET}} (x, y), 15
|
|
{{Cl|LOCATE}} 1, 1: {{Cl|PRINT}} x, y
|
|
{{Cl|END IF}}
|
|
{{Cl|END IF}}
|
|
{{Cl|LOOP}}
|
|
|
|
' your program code
|
|
|
|
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}(27) '' ''
|
|
{{CodeEnd}}
|
|
|
|
|
|
''Example 3:'' Clearing any mouse data read before or during an [[INPUT]] entry. Press "I" to enter input:
|
|
{{CodeStart}}
|
|
{{Cl|PRINT}} "Press I to enter input! Press Q to quit"
|
|
{{Cl|DO...LOOP|DO}}
|
|
K$ = {{Cl|UCASE$}}({{Cl|INKEY$}})
|
|
{{Cl|DO...LOOP|DO}}
|
|
{{Cl|IF...THEN|IF}} {{Cl|_MOUSEBUTTON}}(1) = -1 {{Cl|THEN}} {{Cl|PRINT}} "*" 'indicates a mouse click event
|
|
{{Cl|LOOP}} {{Cl|WHILE}} {{Cl|_MOUSEINPUT}}
|
|
{{Cl|IF...THEN|IF}} K$ = "Q" {{Cl|THEN}} {{Cl|END}}
|
|
{{Cl|IF...THEN|IF}} K$ = "I" {{Cl|THEN}} 'press I to enter text
|
|
{{Cl|INPUT}} "Click the mouse and enter something: ", entry$ 'enter some text
|
|
{{Cl|GOSUB}} Clickcheck 'clear mouse data
|
|
{{Cl|END IF}}
|
|
{{Cl|LOOP}}
|
|
|
|
{{Cl|END}}
|
|
|
|
Clickcheck:
|
|
count = 0
|
|
{{Cl|DO...LOOP|DO}}
|
|
count = count + 1
|
|
{{Cl|LOOP}} {{Cl|WHILE}} {{Cl|_MOUSEINPUT}}
|
|
{{Cl|PRINT}} count 'returns the number of loops before mouse data is cleared
|
|
{{Cl|RETURN}} '' ''
|
|
{{CodeEnd}}
|
|
:''Explanation:'' Click the mouse a few times while entering [[INPUT]] text. When Enter is pressed, the number of loops are displayed.
|
|
|
|
|
|
{{PageSeeAlso}}
|
|
* [[_MOUSEX]], [[_MOUSEY]], [[_MOUSEBUTTON]], [[_MOUSEWHEEL]]
|
|
* [[_MOUSESHOW]], [[_MOUSEHIDE]], [[_MOUSEMOVE]]
|
|
* [[Controller Devices]]
|
|
|
|
|
|
{{PageNavigation}} |