Seite 1 von 1

Klickevent bei Progressbar

Verfasst: 14.11.2016 22:04
von _JON_
Hallo Leute, kann mir jemand sagen wie am besten einen Mausklick auf ein ProgressBarGadget() abfange.
Dachte zuerst an den SS_NOTIFY style, ab dann mag die ProgressBar irgendwie nicht.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 320, 160, "ProgressBarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ProgressBarGadget(0,  10, 30, 250,  30, 0, 100)
  SetGadgetState(0, 50)
  
  ;SetWindowLongPtr_(GadgetID(0), #GWL_STYLE, GetWindowLongPtr_(GadgetID(0), #GWL_STYLE)  | #SS_NOTIFY) 
  
  Repeat
    Event =WaitWindowEvent()
    Select Event 
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        Debug "PB_Event_Gadget"
    EndSelect
  ForEver 
EndIf


Re: Klickevent bei Progressbar

Verfasst: 14.11.2016 22:17
von RSBasic
#SS_NOTIFY sind nur für Static Controls wie z.B. TextGadget.
Für ProgressBarGadget sind andere Konstanten zuständig: #PBM_... (Messages) / #PBS_... (Styles)
Es gibt soweit ich weiß kein Notify-Flag. Da musst du schon mit einem Callback machen:

Code: Alles auswählen

EnableExplicit

Global ProcessBarCB

Procedure ProcessBarCB(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_LBUTTONUP
      Debug "Klick"
  EndSelect
  
  ProcedureReturn CallWindowProc_(ProcessBarCB, hWnd, uMsg, wParam, lParam)  
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ProgressBarGadget(1, 10, 10, 480, 20, 0, 100, 0)
  SetGadgetState(1, 40)
  
  ProcessBarCB = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @ProcessBarCB())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Oder:

Code: Alles auswählen

EnableExplicit

Global ProcessBarCB

Procedure ProcessBarCB(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_LBUTTONUP
      PostEvent(#PB_Event_Gadget, 0, GetProp_(hWnd, "PB_ID"))
  EndSelect
  
  ProcedureReturn CallWindowProc_(ProcessBarCB, hWnd, uMsg, wParam, lParam)  
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ProgressBarGadget(1, 10, 10, 480, 20, 0, 100, 0)
  SetGadgetState(1, 40)
  
  ProcessBarCB = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @ProcessBarCB())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
            Debug "Klick"
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: Klickevent bei Progressbar

Verfasst: 14.11.2016 22:23
von _JON_
Wow, super schnelle Antwort. Habe die 2te Option gleich in mein Program integriert.

Danke RSBasic :D

Re: Klickevent bei Progressbar

Verfasst: 14.11.2016 22:26
von RSBasic
Gern geschehen :)
Sag deiner Katze, sie soll mal lächeln. :D

Re: Klickevent bei Progressbar

Verfasst: 14.11.2016 22:37
von _JON_
Gar nicht so einfach, habe Grumpy Cat noch nie lächeln gesehen.
Das muss wohl mal PhotoShop ran :mrgreen: