CatchSound() vor MessageRequester?

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

du hattest hier bereits ein beispiel gezeigt bekommen, wo auf den button reagiert wurde.
also schau dir doch dieses thema nochmal komplett an.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
by night
Beiträge: 45
Registriert: 24.02.2007 21:52

Beitrag von by night »

Das Beispiel hilft mir nicht wirklich weiter. Die Hilfe auch nicht. Und einige Tutorials, die ich bei Google gefunden habe auch nicht. Ich bräuchte ein simples Beispiel, welches den Umgang mit EventID erkärt. Wichtig ist auch wie ich es konkret einsetze. Sprich an welcher Stelle im Code.

Ich hoffe, du weißt was gemeint ist :)
PureBasic v4.00 (Windows - x86)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wie du richtig gemerkt hast, ist EventID eine variable.
du könntest sie also auch irgendwie anders nennen.

in variablen kann man rückgabewerte von funktionen speichern.
so auch den Rückgabewert von WaitWindowEvent().
das wartet auf irgendein event und gibt dessen nummer zurück.
darauf reagierst du dann.

z.b. wenn das event das schließen des fensters ist (#PB_Event_CloseWindow),
verläßt du deine hauptschleife und dein program.

wenn das event aussagt, dass ein Gadget betätigt wurde,
musst du die funktion EventGadget() aufrufen,
die liefert dir die nummer zurück, welches Gadget betätigt wurde.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
by night
Beiträge: 45
Registriert: 24.02.2007 21:52

Beitrag von by night »

Tolle Erklärung :) Das einzige, was mit jetzt noch fehlt, ist ein Beispiel, was die ganze Sache verdeutlicht. Denn ich verstehe nicht recht, wohin ich diese Variablen im Code hinsetzen muss. Deswegen wäre Beispiel die Lösung meines Problems :wink:
PureBasic v4.00 (Windows - x86)
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

by night hat geschrieben: [...]
Deswegen wäre Beispiel die Lösung meines Problems :wink:
Ist das versteckte Kamera ?
Du hast doch bereits den Code von Edel, da siehst du doch wie diese ominöse Variable benutzt wird.
Benutzeravatar
by night
Beiträge: 45
Registriert: 24.02.2007 21:52

Beitrag von by night »

Habs soweit geschafft. Doch nachdem er den MessageRequester öffnet, lässt er sich nicht wieder schließen. Wie bekomm ich das hin?

Code: Alles auswählen

MessageRequester("Obacht!", "Dieses Programm wird Ihnen dabei helfen, herauszufinden, ob Tobias oder Adrian cooler ist!")

If OpenWindow(0, 400, 400, 200, 200, "Wer ist cooler?")

If CreateGadgetList(WindowID(0))
ButtonGadget(1, 10, 100, 180, 60, "Tobias")
ButtonGadget(2, 10, 15, 180, 60, "Adrian")
EndIf

Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_CloseWindow
Quit=1 
EndIf
If EventGadget()=1
MessageRequester("Falsch!", "Die Antwort ist leider falsch!" +  Chr(10) + "Tobias ist ein Lowbird!")
EndIf
If EventGadget()=2
MessageRequester("Richtig!", "Wunderbar, Sie haben gewonnen!")
    EndIf
Until quit=1
EndIf
End
PureBasic v4.00 (Windows - x86)
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 »

Code: Alles auswählen

MessageRequester("Obacht!", "Dieses Programm wird Ihnen dabei helfen, herauszufinden, ob Tobias oder Adrian cooler ist!")

If OpenWindow(0, 400, 400, 200, 200, "Wer ist cooler?")

  If CreateGadgetList(WindowID(0))
    ButtonGadget(1, 10, 100, 180, 60, "Tobias")
    ButtonGadget(2, 10, 15, 180, 60, "Adrian")
  EndIf

  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_CloseWindow
      Quit=1
    EndIf
    If EventID = #PB_Event_Gadget ; <---------- wichtig, erst abfragen ob Gadget Event, danach erst welches!
      If EventGadget()=1
        MessageRequester("Falsch!", "Die Antwort ist leider falsch!" +  Chr(10) + "Tobias ist ein Lowbird!")
      EndIf
      If EventGadget()=2
        MessageRequester("Richtig!", "Wunderbar, Sie haben gewonnen!")
      EndIf
    EndIf
  Until quit=1
EndIf
End

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
by night
Beiträge: 45
Registriert: 24.02.2007 21:52

Beitrag von by night »

Code: Alles auswählen

MessageRequester("Obacht!", "Dieses Programm wird Sie Stimmen hören lassen!")

InitSound()
CatchSound(1, ?Music)
CatchSound(2, ?Dings)

If OpenWindow(0, 400, 400, 200, 200, "Wer ist cooler?")

  If CreateGadgetList(WindowID(0))
    ButtonGadget(1, 10, 100, 180, 60, "Sebastian")
    ButtonGadget(2, 10, 15, 180, 60, "Adrian")
  EndIf

  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_CloseWindow
      Quit=1
    EndIf
    If EventID = #PB_Event_Gadget 
      If EventGadget()=1
        PlaySound(1, 0)
      EndIf
      If EventGadget()=2
      PlaySound(2, 0)
        
      EndIf
    EndIf
  Until quit=1
EndIf
End 

DataSection
Music: IncludeBinary "c:\sebastian.wav"
Dings: IncludeBinary "c:\adrian.wav"
EndDataSection 
Wenn ich auf den Button "Adrian" klicke, lässt er meine Stimme hören. Aber wenn ich auf den Button Sebastian klicke, lässt er meine und danach Sebastian' s Stimme hören ?!
PureBasic v4.00 (Windows - x86)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Ist der Typ echt? Bild
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
by night
Beiträge: 45
Registriert: 24.02.2007 21:52

Beitrag von by night »

Ja.
PureBasic v4.00 (Windows - x86)
Antworten