Seite 5 von 5

Verfasst: 20.03.2007 18:38
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

Verfasst: 20.03.2007 19:05
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?

Verfasst: 20.03.2007 19:21
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!

Verfasst: 20.03.2007 19:52
von Fluid Byte
Soooohhh mein lieber Freund und Kupferstecher!

Hamwaas jetzt oder wie?

* BETET! *

Verfasst: 20.03.2007 20:42
von by night
Ich heiße Adrian :roll:

Verfasst: 20.03.2007 21:04
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:

Verfasst: 20.03.2007 21:09
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.

Verfasst: 20.03.2007 22:06
von by night
Jup, sitzt :D


/edit: Zensiert wegen zu peinlicher Frage

Verfasst: 20.03.2007 22:14
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