This is the best
Code: Select all
Global max,min
Procedure WinCB(hWnd, uMsg, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_NOTIFY
*updn.NM_UPDOWN = lParam
status = Val(GetGadgetText(0))
If status <= max
If *updn\iDelta < 0
status + 1
Else
status - 1
EndIf
EndIf
If status > max
status = max
EndIf
If status < min
status = min
EndIf
SetGadgetText(0,Str(status))
EndSelect
ProcedureReturn result
EndProcedure
max = 50
min = -50
LoadFont(0,"consolas",14)
OpenWindow(0, 100, 100, 400, 300, "SpinGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ContainerGadget(1,10,10,84,32,#PB_Container_Flat)
TextGadget(0,0,0,60,30,"",#SS_CENTER|#SS_CENTERIMAGE| #SS_NOTIFY)
SetGadgetColor(0,#PB_Gadget_BackColor,$FFFFFF)
SetGadgetColor(0,#PB_Gadget_FrontColor,$0000FF)
SetGadgetFont(0,FontID(0))
hSpin = CreateWindowEx_(0,"msctls_updown32","",#WS_CHILD| #WS_VISIBLE,64,0,40,30,GadgetID(1),1,GetModuleHandle_(0),0)
CloseGadgetList()
SetWindowCallback(@WinCB())
SetGadgetText(0, "0")
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
End
Code: Select all
Global OldProc,hSpin
Procedure SpinSC(hWnd, uMsg, wParam, lParam)
result = CallWindowProc_(OldProc, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_LBUTTONDOWN
If lparam >> 16 > 10
status = Val(GetGadgetText(0))
If status > 0
status - 1
SetGadgetText(0, Str(status))
EndIf
Else
status = Val(GetGadgetText(0))
If status < 100
status + 1
SetGadgetText(0, Str(status))
EndIf
EndIf
EndSelect
ProcedureReturn result
EndProcedure
LoadFont(0,"consolas",14)
OpenWindow(0, 100, 100, 400, 300, "SpinGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ContainerGadget(1,10,10,84,32,#PB_Container_Flat)
TextGadget(0,0,0,60,30,"",#SS_CENTER|#SS_CENTERIMAGE| #SS_NOTIFY)
SetGadgetColor(0,#PB_Gadget_FrontColor,$0000FF)
SetGadgetFont(0,FontID(0))
hSpin = CreateWindowEx_(0,"msctls_updown32","",#WS_CHILD| #WS_VISIBLE,64,0,40,30,GadgetID(1),1,GetModuleHandle_(0),0)
CloseGadgetList()
OldProc = SetWindowLongPtr_(hSpin, #GWL_WNDPROC, @SpinSC())
SetGadgetText(0, "50")
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
End