Posted: Fri Aug 25, 2006 7:55 am
Code: Select all
; Yet another useless program from netmaestro
;
; Shows example procedures for using mouse commands in
; windowed screens when you don't want the mouse captured
Global LBTN_STATUS, RBTN_STATUS
Procedure LeftButtonPushed()
If GetAsyncKeyState_(#VK_LBUTTON) & 32768
LBTN_STATUS = 1
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure RightButtonPushed()
If GetAsyncKeyState_(#VK_RBUTTON) & 32768
RBTN_STATUS = 1
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure LeftButtonReleased()
If GetAsyncKeyState_(#VK_LBUTTON) & 32768
LBTN_STATUS=1
ProcedureReturn #False
Else
If LBTN_STATUS
LBTN_STATUS=0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndIf
EndProcedure
Procedure RightButtonReleased()
If GetAsyncKeyState_(#VK_RBUTTON) & 32768
RBTN_STATUS=1
ProcedureReturn #False
Else
If RBTN_STATUS
RBTN_STATUS=0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndIf
EndProcedure
Procedure Locate(x,y)
cp.point
MapWindowPoints_(WindowID(0),0,@cp,1)
SetCursorPos_(cp\x+20, cp\y+20) ; 20 = Offset of WindowedScreen on Window
ProcedureReturn
EndProcedure
Procedure GetMouseX()
ProcedureReturn WindowMouseX(0)-20 ; 20 = Offset as above
EndProcedure
Procedure GetMouseY()
ProcedureReturn WindowMouseY(0)-20
EndProcedure
Procedure MouseInScreen()
If GetMouseX() >= 0 And GetMouseX() <= 480 And GetMouseY() >=0 And GetMouseY()<=440
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
InitSprite()
OpenWindow(0,0,0,640,480, "Windowed Screen Mouse Substitutes", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
TextGadget(0,520,20,110,20,"")
TextGadget(1,520,60,110,20,"")
TextGadget(2,520,100,110,20,"")
TextGadget(3,520,140,110,20,"")
ButtonGadget(4,520,180,110,20,"Set Cursor to 0,0")
OpenWindowedScreen(WindowID(0),20,20,480,440,0,0,0)
Repeat
ev=WindowEvent()
If ev=#PB_Event_Gadget
If EventGadget()=4
Locate(0,0)
EndIf
EndIf
If MouseInScreen()
outstr.s = Str(GetMouseX())+","+Str(GetMouseY())
Else
outstr.s = "0,0"
EndIf
SetGadgetText(0,outstr)
If LeftButtonPushed() ; will test true while button is down
SetGadgetText(1, "LeftButton DOWN")
Else
SetGadgetText(1,"LefButton UP")
EndIf
If RightButtonPushed() ; will test true while button is down
SetGadgetText(2, "RightButton DOWN")
Else
SetGadgetText(2,"RightButton UP")
EndIf
If RightButtonReleased() ; only fires once on release
SetGadgetText(3, "RightButton Released")
Delay(300)
SetGadgetText(3,"")
EndIf
If LeftButtonReleased() ; only fires once on release
SetGadgetText(3, "LeftButton Released")
Delay(300)
SetGadgetText(3,"")
EndIf
Delay(1)
Until ev=#WM_CLOSE