Seite 1 von 1

Gadget-Events: Button soeben gedrückt?

Verfasst: 22.04.2006 01:52
von Kaeru Gaman
hideeho!

Wenn ich für ein Buttongadget das Gadgetevent normal abfrage,
bekomme ich es erst, wenn der Button wieder losgelassen wird.

ich hätte gern das ereignis "life", also, während der button gedrückt ist.

geht das irgendwie fix und einfach?

...da werd ich wohl API brauchen, hm?

Verfasst: 22.04.2006 02:23
von Laurin
Lass doch mal die Eventnummer, die (Wait)WindowEvent() ausspuckt mal anzeigen.

Da müsste man doch ein extra Event beim Button klicken sehen.

Verfasst: 22.04.2006 03:41
von Kaeru Gaman
gss.. das ich da nicht selber drauf gekommen bin...

habs ausprobiert, aber muss irgendwo ein käfer sein, is wohl zu spät jetzt...

ich bekommm grad ständig als (fast) jedes zweite event ne NULL...
mit dem resultat, das das aktuelle immer NULL ist..
das kann irgendwie nicht sein....

erstmal auf ohr haun, morgen werd ich den blöden fehler schon finden...

Code: Alles auswählen

Dim EvList(10) 

OpenWindow(0, 0,0, 800,600, #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "buttontest" ) 

CreateGadgetList(WindowID(0)) 
    ButtonGadget( 1,   0,   0, 160,  40, "a") 
    ButtonGadget( 2,   0,  50, 160,  40, "b") 
    ButtonGadget( 3,   0, 100, 160,  40, "c") 
    TextGadget( 10, 0,150,160,160,"") 

Repeat 
    WinEventID = WindowEvent() 

    If old <> WinEventID 
        old = WinEventID 
        txt$ = "" 
        For n=0 To 9 
            EvList(n) = EvList(n+1) 
            txt$ + Str(EvList(n)) +Chr(13)+Chr(10) 
        Next 
        EvList(10) = old 
        txt$ + Str(old) 
        SetGadgetText(10,txt$) 
    EndIf    

    If WinEventID = #PB_Event_CloseWindow : EXIT=1 : EndIf 
Until EXIT = 1
is bestimmt ein ganz bescheuerter käfer... aber ich bin auch grad müd...

auf jeden fall mal danke, Laurin...

das ist immerhin schon mal fenstergebunden,
und nicht global, wie GetAsyncKeyState_()

Verfasst: 22.04.2006 04:13
von ts-soft

Code: Alles auswählen

OpenWindow(0, 0,0, 800,600, #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "buttontest" )

CreateGadgetList(WindowID(0))
    ButtonGadget( 1,   0,   0, 160,  40, "a")
    ButtonGadget( 2,   0,  50, 160,  40, "b")
    ButtonGadget( 3,   0, 100, 160,  40, "c")
    TextGadget( 10, 0,150,160,160,"")

Repeat
    WinEventID = WaitWindowEvent()
    If WinEventID = #WM_LBUTTONDOWN
      Select GetFocus_()
        Case GadgetID(1) : Debug "a wird gedrückt"
        Case GadgetID(2) : Debug "b wird gedrückt"
        Case GadgetID(3) : Debug "c wird gedrückt"
      EndSelect
    ElseIf WinEventID = #PB_Event_Gadget
      Select EventGadgetID()
        Case 1 : Debug "a geklickt"
        Case 2 : Debug "b geklickt"
        Case 3 : Debug "c geklickt"
      EndSelect
    ElseIf WinEventID = #PB_Event_CloseWindow
      EXIT = 1
    EndIf
Until EXIT = 1
Hoffe mal, das war, was Du meinst :wink:

Verfasst: 22.04.2006 12:11
von Kaeru Gaman
yo, dank dir ts...

#WM_LBUTTONDOWN is die 513, die ich immer bekommen habe,
und dann nach fokus trennen is logisch.

das erklärt zwar noch nicht, was für nen komischen käfer ich da eingesperrt habe
bei ner simplen elementschlange, aber das is auch egal.

jetzt muss ich noch testen, wie das ganze sich verhält bei nicht-standard aktionen.
wenn ich das verwenden will, um Flags zu setzen/löschen,
die einen kontinuierlichen Ablauf ermöglichen,
sollte es sich nicht irgendwie blockieren,
wenn ich zwischendrin das fenster wechsel oder
mit gedrücktem button das fenster verlasse oder so..