ReleaseMouse()
Posted: Wed Aug 24, 2011 8:12 am
Anyone know how to release a mouse on a window screen? What worked on Windows doesn't seem to on Mac.
Code: Select all
#WinWidth = 640
#WinHeight = 480
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
OpenWindow(0, 0, 0,#WinWidth, #WinHeight, "Release Mouse", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, #WinWidth, #WinHeight, 0, 0, 0)
CreateSprite(1, 117, 16)
StartDrawing(SpriteOutput(1))
DrawingMode(#PB_2DDrawing_Default)
DrawText(4, 0, "Press ESC to quit.")
StopDrawing()
Quit = #False
MR = 0
Repeat
ExamineMouse()
ExamineKeyboard()
Repeat
Event = WindowEvent()
If Event = #PB_Event_CloseWindow
Quit = #True
EndIf
Until Event = 0
FlipBuffers()
ClearScreen(0)
SetFrameRate(60)
If WindowMouseX(0) > 0 And WindowMouseY(0) > 0 And WindowMouseX(0) < 640 -1 And WindowMouseY(0) < 480 -1
If MR = 0
ReleaseMouse(0)
MouseLocate(WindowWidth(0) / 2, WindowHeight(0) / 2)
MR = 1
EndIf
ElseIf MouseX() = 0 Or MouseY() = 0 Or MouseX() = 640 -1 Or MouseY() = 480 -1
If MR = 1
ReleaseMouse(1)
MR = 0
EndIf
EndIf
DisplaySprite(1, MouseX(), MouseY())
Until Quit Or KeyboardPushed(#PB_Key_Escape)
End Code: Select all
Global override.l
ProcedureC EventHandler(*NextEventHandler, Event, UserData)
Select GetEventClass(Event)
Case #kEventClassMouse
Select GetEventKind_(Event)
Case #kEventMouseDown
override=#WM_LBUTTONDOWN
Case #kEventMouseUp
override=#WM_LBUTTONUP
Case #kEventMouseMoved
override=#WM_MOUSEMOVE
Case #kEventMouseDragged
override=#WM_MOUSEMOVE
EndSelect
EndSelect
If *NextEventHandler
CallNextEventHandler_(*NextEventHandler, Event)
EndIf
EndProcedure
;openwindow etc goes here, then install eventhandler:
EventHandlerUPP = NewEventHandlerUPP_(@EventHandler())
EventCount = 4
Dim EventTypes.EventTypeSpec(EventCount - 1)
EventTypes(0)\EventClass = #kEventClassMouse
EventTypes(0)\EventKind = #kEventMouseDown
eventTypes(1)\eventClass = #kEventClassMouse
eventtypes(1)\eventKind = #kEventMouseMoved
eventTypes(2)\eventClass = #kEventClassMouse
eventtypes(2)\eventKind = #kEventMouseUp
eventTypes(3)\eventClass = #kEventClassMouse
eventtypes(3)\eventKind = #kEventMouseDragged
InstallEventHandler_(GetWindowEventTarget_(WindowID(#window)), EventHandlerUPP, EventCount, @EventTypes(), UserData, @EventHandlerRef)
;here do all window related tuff