Code: Select all
Structure MOUSESTATE
mouseloc.POINT
mbutton.i[4]
EndStructure
Procedure MouseInit()
ProcedureReturn 1
EndProcedure
Procedure MouseExamine()
Shared _mstate.MOUSESTATE
Static screenw=0, screenh=0
If Not screenw
GetClientRect_(ScreenID(),@cr.RECT)
screenw = cr\right-cr\left
screenh = cr\bottom-cr\top
EndIf
RtlZeroMemory_(@_mstate, SizeOf(MOUSESTATE))
GetCursorPos_(@_mstate\mouseloc)
If WindowFromPoint_(_mstate\mouseloc\x | (_mstate\mouseloc\y<<32))=ScreenID()
SetCursor_(0)
EndIf
MapWindowPoints_(0,ScreenID(),@_mstate\mouseloc,1)
If _mstate\mouseloc\x < 0 : _mstate\mouseloc\x = 0 : EndIf
If _mstate\mouseloc\y < 0 : _mstate\mouseloc\y = 0 : EndIf
If _mstate\mouseloc\x >= screenw : _mstate\mouseloc\x = screenw-1 : EndIf
If _mstate\mouseloc\y >= screenh : _mstate\mouseloc\y = screenh-1 : EndIf
With _mstate
\mbutton[1]= GetAsyncKeyState_(#VK_LBUTTON) & 32768
\mbutton[3]= GetAsyncKeyState_(#VK_MBUTTON) & 32768
\mbutton[2]= GetAsyncKeyState_(#VK_RBUTTON) & 32768
EndWith
EndProcedure
Procedure GetMouseX()
Shared _mstate.MOUSESTATE
ProcedureReturn _mstate\mouseloc\x
EndProcedure
Procedure GetMouseY()
Shared _mstate.MOUSESTATE
ProcedureReturn _mstate\mouseloc\y
EndProcedure
Procedure GetMouseKey(button)
Shared _mstate.MOUSESTATE
ProcedureReturn _mstate\mbutton[button]
EndProcedure
Macro InitMouse() : MouseInit() : EndMacro
Macro ExamineMouse() : MouseExamine() : EndMacro
Macro MouseX() : GetMouseX() : EndMacro
Macro MouseY() : GetMouseY() : EndMacro
Macro MouseButton(button) : GetMouseKey(button) : EndMacro
Code: Select all
OpenWindow(0,0,0,640,240,"",#PB_Window_ScreenCentered)
InitSprite():InitMouse():InitKeyboard()
ContainerGadget(0,0,0,320,240)
OpenWindowedScreen(GadgetID(0),0,0,320,240,0,0,0)
Repeat
While WindowEvent():Wend
ClearScreen(0)
ExamineMouse()
StartDrawing(ScreenOutput())
DrawText(100,100,Str(MouseX())+", "+Str(MouseY()), #White, #Black)
If MouseButton(#PB_MouseButton_Left)
DrawText(100,120,"Left")
EndIf
If MouseButton(#PB_MouseButton_Middle)
DrawText(130,120,"Middle")
EndIf
If MouseButton(#PB_MouseButton_Right)
DrawText(180,120,"Right")
EndIf
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)