Klickevent bei Progressbar

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Klickevent bei Progressbar

Beitrag 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

PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Klickevent bei Progressbar

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Klickevent bei Progressbar

Beitrag von _JON_ »

Wow, super schnelle Antwort. Habe die 2te Option gleich in mein Program integriert.

Danke RSBasic :D
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Klickevent bei Progressbar

Beitrag von RSBasic »

Gern geschehen :)
Sag deiner Katze, sie soll mal lächeln. :D
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Klickevent bei Progressbar

Beitrag von _JON_ »

Gar nicht so einfach, habe Grumpy Cat noch nie lächeln gesehen.
Das muss wohl mal PhotoShop ran :mrgreen:
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Antworten