Mouse problem and resolution switching problem

Blitz3D Forums/Blitz3D Programming/Mouse problem and resolution switching problem

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Userlibs! This works here...

; -----------------------------------------------------------------------------
; IMPORTANT: Add these to user32.decls in your Userlibs folder:
; -----------------------------------------------------------------------------
; .lib "user32.dll"
; -----------------------------------------------------------------------------
; GetCursorPos% (point*): GetCursorPos
; ScreenToClient% (window, point*): ScreenToClient
; GetActiveWindow% (): GetActiveWindow
; SetWindowPos% (window, order, x, y, width, height, flags): SetWindowPos
; -----------------------------------------------------------------------------

; -----------------------------------------------------------------------------
; Required constants for UnstickWindow ()
; -----------------------------------------------------------------------------

Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = 1
Const SWP_NOMOVE = 2

; -----------------------------------------------------------------------------
; Required structure for MouseInWindow ()
; -----------------------------------------------------------------------------

Type MousePoint
	Field x
	Field y
End Type

; -----------------------------------------------------------------------------
; Functions
; -----------------------------------------------------------------------------

Function MouseInWindow (mp.MousePoint)
	GetCursorPos (mp)
	ScreenToClient (GetActiveWindow (), mp)
	If (mp\x < 0) Or (mp\x > GraphicsWidth ()) Or (mp\y < 0) Or (mp\y > GraphicsHeight ())
		Return 0
	EndIf
	Return 1
End Function

Function UnstickWindow ()
	SetWindowPos (GetActiveWindow (), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Function

; -----------------------------------------------------------------------------
; Demo...
; -----------------------------------------------------------------------------

AppTitle "Move mouse outside window..."
Graphics3D 640, 480

; -----------------------------------------------------------------------------
; Important! Create a 'MousePoint' and pass to MouseInWindow () below...
; -----------------------------------------------------------------------------

mp.MousePoint = New MousePoint

Repeat

	Cls

	; SPACE = switch between full screen and windowed...
	
	If KeyHit (57)

		; Mode switch variable...
		
		mode = 1 - mode
		
		; Close graphics mode...
		
		EndGraphics

		; If going into windowed mode, unstick window!
		
		If mode = 1
			Graphics3D 640, 480, 0, 2
			UnstickWindow ()
		Else
			Graphics3D 640, 480
		EndIf

	EndIf
	
	Text 20, 20, "Hit SPACE to switch modes..."

	; Check in mouse is within window...
		
	If MouseInWindow (mp) = False
		Text 20, 40, "Outside window!"
	EndIf
	
	Flip
	
Until KeyHit (1)

End