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?

*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

)
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

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

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
/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?

Normalerweise manuel, aber dieses sollte Dir helfen:
http://www.purebasic.fr/german/viewtopi ... einruecker