and tomorow?blueznl wrote:I'd settle for just a simple mousebutton() but I'm not that demanding... today.

Code: Select all
OpenWindow(0, 0, 0, 300, 200,"Test", #PB_Window_SystemMenu)
;OpenWindow(0, 0, 0, 300, 200, #PB_Window_SystemMenu, "Test")
hWnd = WindowID(0) ;hWnd = WindowID()
UseGadgetList(WindowID(0)) ;CreateGadgetList(WindowID(0))
Code: Select all
Procedure.i x_leftmousebutton() ; return current state of left mousebutton
;
; retval: #True - mouse button down
; #False - mouse button up
;
; notes:
;
; - does not use events!
; - use #wm_lbuttonup and #wm_lbuttondown for event based handling
;
If GetSystemMetrics_(#SM_SWAPBUTTON) = 0
ProcedureReturn x_bool(GetAsyncKeyState_(#VK_LBUTTON))
Else
ProcedureReturn x_bool(GetAsyncKeyState_(#VK_RBUTTON))
EndIf
EndProcedure
Procedure.i x_rightmousebutton() ; return current state of right mousebutton
;
; notes:
;
; - does not use events!
; - use #wm_lbuttonup and #wm_lbuttondown for event based handling
;
If GetSystemMetrics_(#SM_SWAPBUTTON) = 0
ProcedureReturn x_bool(GetAsyncKeyState_(#VK_RBUTTON))
Else
ProcedureReturn x_bool(GetAsyncKeyState_(#VK_LBUTTON))
EndIf
EndProcedure
Procedure.i x_mousewheel(mode.i) ; returns number of lines up / down upon using the scrollwheel after a #WM_MOUSEWHEEL event
Protected d.i
;
; *** returns number of lines up / down upon using the scrollwheel after a #WM_MOUSEWHEEL event
;
; in: mode.i = 0 - one line per message, return -1 for up, +1 for down
; = 1 - use windows setting for calculating number of lines, from -n to +n
; retval: < 0 - up
; > 0 - down
;
If mode = 0
d = x_sgn( EventwParam() >> 16 )
Else
;
; #SPI_GETWHEELSCROLLLINES = 104
;
d = 0
SystemParametersInfo_(104,0,@d,0)
d = (EventwParam() >> 16)*d/120
;
EndIf
ProcedureReturn d
EndProcedure