09-10-2023, 10:41 PM
(09-10-2023, 12:28 AM)grymmjack Wrote: Try putting `WHILE _MOUSEINPUT`: ... `WEND`
Inside inner loop, have tight mouse loop.
Hi grymmjack, thank for suggestion.
I have done different attempts but they haven't solved the issue.
Code: (Select All)
Rem the goal: we wanto to detect if mouse is out o in window's area
Rem the idea is to evaluate the position of the mouse at starting of the run of the application
Rem if QB64 does not set mouse in an that area at run time, we can set position of mouse with related functions
Option _Explicit
Dim S As Long
Dim As Integer W, H, Xms, Yms, XM, YM, Wrange, Hrange
W = 800: H = 600
S = _NewImage(W, H, 32)
_MouseMove 1, 1
Wrange = 1 'W - 1
Hrange = 1 'H - 1
Do
' If _MouseInput Then
While _MouseInput
Xms = _MouseX
Yms = _MouseY
XM = _MouseMovementX
YM = _MouseMovementY
Wrange = Wrange + XM
Hrange = Hrange + YM
Print Xms; " "; Yms, XM; " "; YM, Wrange; " "; Hrange
If (Wrange < 0) Then Print "Mouse out on the left"
If (Wrange > W) Then Print "mouse out on the right"
If (Hrange < 0) Then Print "mouse out on the top"
If (Hrange > H) Then Print " mouse out on the bottom"
Wend
''' a trick: if mouse is on the border and XM is not 0 it goes out of window
''If (Xms = 1 And XM) Then Print "Mouse out on the left"
''If (Xms = 80 And XM) Then Print "mouse out on the right"
''If (Yms = 1 And YM) Then Print "mouse out on the top"
''If (Yms = 25 And YM) Then Print " mouse out on the bottom"
' End If
' _Limit 200 ' _delay 0.001
Loop Until InKey$ <> ""
End
I have evaluated different ways to calculate and adjourn the position o f mouse with the saame results.
I have used also your suggeston but I arrived at the the same point.
I'm going to do a study code of _MousemovementX & _mousemovemeentY.