Button klick auswerten

Anfängerfragen zum Programmieren mit PureBasic.
ozoffi
Beiträge: 41
Registriert: 08.02.2010 20:56

Button klick auswerten

Beitrag von ozoffi »

Hallo!

Normalerweise wird offenbar der Status eines angeklickten Buttons erst zurückgegeben, wenn man den Klick beendet hat (also die Maustaste wieder los lässt)- Bleibt der Button "gedrückt" kommt kein Wert zurück.

Genau dass will ich aber auswertgen. Ich will nicht nur wissen, OB ein Button gedrückt wurde, sondern wie lange.

D.H. wenn ich einen Button kurz drücke, wird ein Flag halt kurz auf 1 und dann wieder auf 0 gesetzt,
Wenn ich den Button lange drücke, bleibt das Flag so lange auf 1, wie eben der Button gedrückt wird.

Code: Alles auswählen


Repeat
  
   Event0 = WaitWindowEvent(0)     
     Select Event0     
       Case #PB_Event_Gadget   
         eventGadget = EventGadget()
        Select EventGadget()
        Case EventGadget()        
            If EventGadget() = #ButtonFT0 
            debug "X"
           endif
        EndSelect               
       
       Case #PB_Event_CloseWindow
        Quit = 1
    EndSelect  
    
 Until Quit = 1 
 End

Damit bekomme ich eben nur zurück OB ein Button gedrückt "wurde", aber nicht wie lange, bzw. ob er noch immer gedrückt ist....

Gibt es da eine Möglchkeit?

lg
Oliver
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Button klick auswerten

Beitrag von RSBasic »

Das kannst du nur über WinAPI machen.

Meinst du etwa so?

Code: Alles auswählen

EnableExplicit

Global lpPrevFunc

Procedure ButtonProc(hWnd,uMsg,wParam,lParam)
 
  Select uMsg
    Case #WM_LBUTTONDOWN
      Debug "Linke Maustaste wird gedrückt"
    Case #WM_LBUTTONUP
      Debug "Linke Maustaste wurde losgelassen"
     
  EndSelect
 
  ProcedureReturn CallWindowProc_(lpPrevFunc,hWnd,uMsg,wParam,lParam)
EndProcedure

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,100,20,"Button",0)
 
  lpPrevFunc = SetWindowLongPtr_(GadgetID(1),#GWL_WNDPROC,@ButtonProc())
 
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
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
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Button klick auswerten

Beitrag von TomS »

Falls du nicht alles von Hand machen willst: http://purebasic.fr/english/viewtopic.php?f=12&t=45830
ozoffi
Beiträge: 41
Registriert: 08.02.2010 20:56

Re: Button klick auswerten

Beitrag von ozoffi »

Vielen Danke für den Tipp und den Link.
Da werde ich wohl nochmal alles umstellen ....
Antworten