Gadgets auf einem Screen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Wespe23
Beiträge: 72
Registriert: 06.11.2005 16:05

Gadgets auf einem Screen

Beitrag von Wespe23 »

Ich habe folgendes Problem: ich will Gadgets auf einen Screen zeichnen, aber das unten angeführte Beispiel funktioniert nicht...

Code: Alles auswählen

OpenScreen(640,480,24,"Beispiel")
If CreateGadgetList(WindowId())
ButtonGadget(0,200,200,70,70,"Klick mich...")
Delay(5000)
Endif
CloseScreen()
End
Der Sinn des ganzen auf-und-abs ist dass ich einen Button auf [Position X = 200 , Y = 200 , Breite = 70 , Höhe = 70 , Aufschrift = Klick mich] auf einen Screen machen will.
Meine Programmier-Tools:
  • PureBasic Professional Vollversion
  • jaPBe mit kaputtem Compiler
  • Borland C++ Builder 6.0
  • MS C++ Express-Edition
Ich hatte auch mal XProfan 8.0beta
Und Java wollte ich auch mal probieren
:D
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ein screen ist kein window, deswegen kann der auch keine gadgets enthalten....

du musst dir deine buttons selber basteln.

d.h. du brauchst mindestens 1 sprite für den button (eher nochn zweiten für 'gedrückt')
also, eben ne bmp malen in 70x70 wo "klick mich" drauf steht,
und die mit displaysprite bei 200,200 anzeigen...
dann musst du die maus abfragen und den mauspointer setzen...
und dann halt den mausbutton abfragen, die koordinaten checken,
und wenn der zeiger überm button ist, nen click ausführen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

In PBOSL gibt es eine ScreenGadget-lib, ich hoffe das ist was du suchst.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Macros
Die wird auf seinem System wohl nicht gehen:
signatur hat geschrieben:PureBasic 3.49 x86 DEMO
jaPBe mit kaputtem Compiler
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Wespe23
Beiträge: 72
Registriert: 06.11.2005 16:05

Beitrag von Wespe23 »

Sorry, ich meinte

Code: Alles auswählen

OpenScreen(640,480,24,"Beispiel") 
If CreateGadgetList(ScreenId()) 
ButtonGadget(0,200,200,70,70,"Klick mich...") 
Delay(5000) 
Endif 
CloseScreen() 
End 
@Kaeru
Dann muss ich ja tausendmal abfragen.

Code: Alles auswählen

If MouseX() And MouseY() .....
oder ähnlich. Noch dazu:Wie kann man feststellen, ob ein 'Sprite' gedrückt worden ist... :roll:
Meine Programmier-Tools:
  • PureBasic Professional Vollversion
  • jaPBe mit kaputtem Compiler
  • Borland C++ Builder 6.0
  • MS C++ Express-Edition
Ich hatte auch mal XProfan 8.0beta
Und Java wollte ich auch mal probieren
:D
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das X/Y kannst du vereinfachen, indem du kollision zwischen mauszeiger und button abfragst.
bei einer button-reihe ist aber die koordinatenmethode oft einfacher.

das sprite selber ist nicht gedrückt, das musst du komplett selbst coden.

wenn der button gedrückt ist und der zeiger auf dem sprite, dann setzt du ein flag, z.b. Button1=1, das fragst du später ab.

im screen hast du grundsätzlich keine windows-elemente, auch keine events.

umgekehrt hast du ne menge andere vorteile.
versuch doch mal, ne tilemap mit images aufn window zu packen,
da schreibst du dirn wolf und es is saulahm.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten