Simulation eines GadgetEvents unter Windows

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2476
Registriert: 01.04.2007 20:18

Simulation eines GadgetEvents unter Windows

Beitrag 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.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Simulation eines GadgetEvents unter Windows

Beitrag 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
a²+b²=mc²
Benutzeravatar
Bisonte
Beiträge: 2476
Registriert: 01.04.2007 20:18

Re: Simulation eines GadgetEvents unter Windows

Beitrag 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 ^^
Zuletzt geändert von Bisonte am 17.07.2012 13:33, insgesamt 1-mal geändert.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Simulation eines GadgetEvents unter Windows

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2476
Registriert: 01.04.2007 20:18

Re: Simulation eines GadgetEvents unter Windows

Beitrag von Bisonte »

Danke.

So einfach.... Da war meine Brille wohl wieder beschlagen ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Simulation eines GadgetEvents unter Windows

Beitrag 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)
Gruß, Frank
Antworten