CatchSound() vor MessageRequester?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

by night hat geschrieben:Ja.
Reicht mir nicht!

Auch auf die Gefahr hin das dies ne' Verarsche ist:

Code: Alles auswählen

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

OpenWindow(0, 400, 400, 200, 200, "Wer ist cooler?")
CreateGadgetList(WindowID(0))
ButtonGadget(1, 10, 100, 180, 60, "Sebastian")
ButtonGadget(2, 10, 15, 180, 60, "Adrian")

Repeat
	EventID = WaitWindowEvent()

	If EventID = #PB_Event_Gadget
		Select EventGadget()
			Case 1 : MessageBeep_(#MB_ICONEXCLAMATION)
			Case 2 : MessageBeep_(#MB_ICONASTERISK)	   
		EndSelect
	EndIf
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Fluid Byte hat geschrieben:Ist der Typ echt? Bild
*ROFEL*

...welcher Adrian denn? Monk?


ein problem in dem ursprungscode könnte sein, dass EventGadget() zwei mal aufgerufen wird.

das wird durch die verwendung von Select / Case vermieden.
man kann es auch mit If machen, aber dann sollte man den Wert zwischenspeichern in einer Variable:

Code: Alles auswählen

    If EventID = #PB_Event_Gadget
      EvGadget = EventGadget()
      If EvGadget=1
        PlaySound(1, 0)
      EndIf
      If EvGadget=2
        PlaySound(2, 0)
      EndIf
    EndIf 
aber ob es daran liegt ist noch die frage...
sind denn die sounds in ordnung?
wenn du die ohne button-schicki-micki abspielst, kommt das dann korrekt?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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 »

Hier nochmal ein Grundgerüst für das Eventloop ohne Select (Select ist aber
schöner :mrgreen: )

Code: Alles auswählen

Define.l EventID, MenuID, GadgetID, EventType, Quit = #FALSE

Repeat
  EventID   = WaitWindowEvent()
  MenuID    = EventMenu()
  GadgetID  = EventGadget()
  EventType = EventType()

  If EventID = #PB_Event_CloseWindow ; Fenster wurde geschlossen

    Quit = #True

  ElseIf EventID = #PB_Event_Gadget ; ein Gadget wurde gewählt

    If GadgetID = 1 ; Gadget(1) wurde gewählt

      ; hier eventuell noch nach EventType unterscheiden

    ElseIf GadgetID = 2

    ElseIf GadgetID = 3

    EndIf

  ElseIf EventID = #PB_Event_Menu ; Menu, Toolbar oder Shortcut wurde gewählt

    If MenuID = 1 ; Menu mit der ID 1 wurde gewählt

    ElseIf MenuID = 2

    EndIf
  EndIf

Until Quit = #True
Für mehrere Fenster ist dies noch zu erweitern!
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
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Soooohhh mein lieber Freund und Kupferstecher!

Hamwaas jetzt oder wie?

* BETET! *
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
by night
Beiträge: 45
Registriert: 24.02.2007 21:52

Beitrag von by night »

Ich heiße Adrian :roll:
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 »

Hier noch die Select-Variante. Vorteil: Keine extra Variablen notwendig,
sowie übersichtlicher, vorausgesetzt, man rückt vernünftig ein!

Code: Alles auswählen

Repeat

  Select WaitWindowEvent()

    Case #PB_Event_CloseWindow ; Fenster wurde geschlossen

      Break ; Repeatschleife verlassen

    Case #PB_Event_Gadget ; ein Gadget wurde gewählt

      Select EventGadget()

        Case 1
          ; Gadget(1) wurde gewählt

          Select EventType()

            Case #PB_EventType_LeftClick
              ; linke Maustaste

            Case #PB_EventType_RightClick
              ; rechte Maustaste

          EndSelect

      EndSelect

    Case #PB_Event_Menu

      Select EventMenu()

        Case 1 ; Menu mit der ID 1 wurde gewählt

        Case 2

      EndSelect

  EndSelect

ForEver
Ich hoffe, mein lieber Adrian, das es jetzt sitzt :wink:
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
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 »

Kaeru Gaman hat geschrieben: ein problem in dem ursprungscode könnte sein, dass EventGadget() zwei mal aufgerufen wird.
Das kann aber nicht sein, du kannst EventGadget() so oft aufrufen wie du willst, das Ergebnis sollte eh seit dem vorrangegangenen (Wait)WindowEvent() in Stein gemeißelt sein.
Benutzeravatar
by night
Beiträge: 45
Registriert: 24.02.2007 21:52

Beitrag von by night »

Jup, sitzt :D


/edit: Zensiert wegen zu peinlicher Frage
Zuletzt geändert von by night am 20.03.2007 22:27, insgesamt 1-mal geändert.
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 »

by night hat geschrieben: /edit: Wie rücke ich denn eigentlich zusammen? :oops:
Normalerweise manuel, aber dieses sollte Dir helfen:
http://www.purebasic.fr/german/viewtopi ... einruecker
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
Antworten