Seite 1 von 1

Simulation eines GadgetEvents unter Windows

Verfasst: 17.07.2012 13:16
von Bisonte
Hallo erstmal ...

Folgendes Beispiel :

Nehmen wir an, ich habe ein ImageGadget ausgeschaltet (DisableGadget), nun greift ja nicht mehr

Code: Alles auswählen

Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
  If EventGadget() = ImageGadget
    ; Do something
  EndIf
EndIf
wie kann ich nun der Eventloop mitteilen (per Post oder SendMessage denk ich...)
das ein #PB_EventGadget anliegt und EventGadget() die entsprechende Gadget PB Nummer rausrückt ?

Für EventMenu() gibts bei RSBasic ein Beispiel, aber für Gadgets hab ich das noch nicht so wirklich
hinbekommen/rausgefunden.

Re: Simulation eines GadgetEvents unter Windows

Verfasst: 17.07.2012 13:23
von Kiffi
mh..., anstelle von '; Do something' wird bei Dir doch eine
Procedure aufgerufen, oder? Wie wäre es, wenn Du die
Proc direkt aufrufst (anstatt des aufwändigen Simulierens
eines Events)?

Grüße ... Kiffi

Re: Simulation eines GadgetEvents unter Windows

Verfasst: 17.07.2012 13:32
von Bisonte
Das war jetzt nur ein Beispiel.

Es geht mir darum, eben diese Events zu simulieren.

Zum Beispiel ein selbstgebautes TextGadget (ein ImageGadget eben), das auch Mausklicks an die Eventloop leitet...
Und dann zum Einbau in eine Userlib oder Include, für allgemeines benutzen und nicht auf jede Anwendung zugeschnitten...

Irgendwie muss PB das ja auch hinkriegen ^^

Re: Simulation eines GadgetEvents unter Windows

Verfasst: 17.07.2012 13:33
von RSBasic
Ich wär auch dafür, dass du einfach deine Aufgaben, die beispielsweise bei Click durchgeführt werden, in einer Prozedur auslagerst und diese Prozedur manuell aufrufst.

Aber wenn du dennoch beispielsweise einen Click-Event auf ImageGadget, welches deaktiviert wurde, simulieren möchtest:

Code: Alles auswählen

EnableExplicit

Define EventID

CreateImage(1, 200, 200)

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ImageGadget(1, 10, 10, 0, 0, ImageID(1), 0)
  DisableGadget(1, 1)
  ButtonGadget(2, 10, 220, 300, 20, "Click auf DisabledImage simulieren", 0)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
       Case 1
         Debug "Event"
       Case 2
         SendMessage_(GadgetID(1),#WM_LBUTTONDOWN,0,0)
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
EndIf

Re: Simulation eines GadgetEvents unter Windows

Verfasst: 17.07.2012 13:36
von Bisonte
Danke.

So einfach.... Da war meine Brille wohl wieder beschlagen ;)

Re: Simulation eines GadgetEvents unter Windows

Verfasst: 17.07.2012 14:34
von Frabbing
Direkt simulieren ginge so (hier Linksklick):

Code: Alles auswählen

Import ""
  PB_Gadget_SendGadgetCommand(hWnd, EventType)
EndImport

PB_Gadget_SendGadgetCommand(GadgetID(#gadget), #PB_EventType_LeftClick)