Seite 1 von 5

CatchSound() vor MessageRequester?

Verfasst: 18.03.2007 12:15
von by night
Hallo zusammen,

Ich habe mich einige Zeit mit den Help Files aus PureBasic beschäftigt und einiges ausprobiert. Folgendes möchte nicht ganz funktionieren. Code:

Code: Alles auswählen

If MessageRequester("Hallo", "Möchten Sie den neuen Track von **** hören?", #PB_MessageRequester_YesNo)=#PB_MessageRequester_Yes
MessageRequester("Ja!", "Sie haben sich für den neuen Track von **** entschieden" +  Chr(10) + "Bitte bestätigen Sie mit OK!")
InitSound()
LoadSound(0,"c:\hate.wav")
PlaySound(0,1)
MessageRequester("Glückwunsch", "Sie können nun den neuen Track von **** hören!")
Delay(153000)
Else 
MessageRequester("Nein!", "Sie haben sich gegen den neuen Track von **** entschieden!")
EndIf
Soweit. Doch jetzt möchte ich noch per CatchSound() alles in eine .exe packen. Ich habe es so versucht:

Code: Alles auswählen

CatchSound(0, ?Music)
End
DataSection
Music: IncludeBinary "c:\hate.wav"

If MessageRequester("Hallo", "Möchten Sie den neuen Track von **** hören?", #PB_MessageRequester_YesNo)=#PB_MessageRequester_Yes
MessageRequester("Ja!", "Sie haben sich für den neuen Track von **** entschieden" +  Chr(10) + "Bitte bestätigen Sie mit OK!")
InitSound()
LoadSound(0,"c:\hate.wav")
PlaySound(0,1)
MessageRequester("Glückwunsch", "Sie können nun den neuen Track von **** hören!")
Delay(153000)
Else 
MessageRequester("Nein!", "Sie haben sich gegen den neuen Track von **** entschieden!")
EndIf
Doch das scheint nicht ganz zu klappen. Warum? :)



MfG

Verfasst: 18.03.2007 12:17
von a14xerus
weil du da "end" stehen hast.
dann beendet sich doch dein programm direkt in der 2. zeile
ich habs mir jetzt garnihct weiter durchgelesen

Edit: hier

Code: Alles auswählen

InitSound()
CatchSound(0, ?Music)

If MessageRequester("Hallo", "Möchten Sie den neuen Track von **** hören?", #PB_MessageRequester_YesNo)=#PB_MessageRequester_Yes
  MessageRequester("Ja!", "Sie haben sich für den neuen Track von **** entschieden" +  Chr(10) + "Bitte bestätigen Sie mit OK!")
  PlaySound(0,1)
  MessageRequester("Glückwunsch", "Sie hören nun den neuen Track von **** !" + Chr(10) + "Mit 'OK' beenden Sie die Wiedergabe")
Else
  MessageRequester("Nein!", "Sie haben sich gegen den neuen Track von **** entschieden!")
EndIf

End

DataSection
  Music: IncludeBinary "c:\hate.wav"
EndDataSection 


Verfasst: 18.03.2007 12:36
von by night
Danke. Klappt :)

Verfasst: 18.03.2007 13:53
von by night
Noch eine Frage: Wie kann ich Bilder in ein Fenster einbinden? Die Hilfe von PB bringt mich nicht weiter, weil ich nicht weiß wie der Befehl heißt.

Verfasst: 18.03.2007 13:53
von edel
ImageGadget.

Verfasst: 18.03.2007 15:53
von by night

Code: Alles auswählen

If OpenWindow(0, 400, 400, 400, 200, "Was möchten Sie hören?", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(0))
ButtonGadget(1, 260, 50, 100, 70, "Band XYZ")
ButtonGadget(2, 30, 50, 100, 70, "Band ABC")
EndIf

Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow 
Quit = 1
EndIf
Until Quit=1
EndIf
End
Ich kriege es nichts ganz hin, 2 Lieder in eine .exe einzubinden. Ich hatte es anfangs so versucht:

Code: Alles auswählen

If OpenWindow(0, 400, 400, 400, 200, "Was möchten Sie hören?", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(0))
ButtonGadget(1, 260, 50, 100, 70, "Band XYZ")
ButtonGadget(2, 30, 50, 100, 70, "Band ABC")
EndIf

Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow 
Quit = 1
EndIf
Until Quit=1
EndIf
End

InitSound()
CatchSound(0, ?Music1)
DataSection
Music1: IncludeBinary "c:\date.wav"
EndDataSection 

InitSound()
CatchSound(0, ?Music2)
DataSection
Music2: IncludeBinary "c:\rammstein.wav"
EndDataSection 
Doch dann erscheint eine schwerwiegende Fehlermeldung. Wie ist es also möglich 2 Lieder gleichzeitig in eine .exe zu packen?

Verfasst: 18.03.2007 15:58
von Kaeru Gaman
1. InitSound ist ein Command, also pack es an den Anfang und nur einmal.

2. wenn deine buttons was auslösen sollen, musst du auch deren events abfragen.

3. du solltest nicht versuchen, beide songs in denselben sound zu laden...

Verfasst: 18.03.2007 16:02
von by night
Kann ich denn mit einem Command 2 Sound Dateien laden? Denn irgendwoher muss ja die 2. Sound Datei kommen.

Zu den Events:

Code: Alles auswählen

Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_CloseWindow 
    Quit = 1
  EndIf
  If EventID = #PB_Event_Gadget
    If EventGadgetID()= 0
      MessageRequester("Achtung!","Zweiter Knopf!!",0)
    EndIf
    If EventGadgetID()= 0
      MessageRequester("Achtung!","Erster Knopf!",0)
    EndIf
  EndIf
Until Quit=1
EndIf
End
Geht das so? Und kann ich anstelle des MessageRequesters dann die Play-Funktion nehmen?

eingerückt - Kaeru fecit

Verfasst: 18.03.2007 16:09
von Kaeru Gaman
du solltest dir erstmal klar drüber werden, was welches command macht und in welcher reihenfolge was funktioniert.

IncludeBinary ist ein Compile-Time command.
das bedeutet, zu dem zeitpunkt wo du compilierst wird das file eingebunden.

CatchSound ist ein Runtime-Command, das bedeutet, es wird zur laufzeit ausgeführt
und muss auch an einer stelle im code stehen, wo die CPU hinkommt zur Laufzeit...

so die DataSection:

Code: Alles auswählen

DataSection
Music1: 
  IncludeBinary "c:\date.wav"

Music2: 
  IncludeBinary "c:\rammstein.wav"
EndDataSection
so das einladen am anfang:

Code: Alles auswählen

InitSound()
CatchSound(0, ?Music1) 
CatchSound(1, ?Music2) 
;...
If OpenWindow(0, 400, 400, 400, 200, "Was möchten Sie hören?", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
...und natürlich brauchst du auch code, der überhaupt auf das drücken der buttons reagiert...
die HELP hilft...

PS:
ich war schon am schreiben... ja, deine button abfrage sieht auf den ersten blick ok aus...

PPS:
aber BITTE code einrücken, das kann doch keiner lesen so...

PPPS:
so.. habs mal eingerückt...
also, du solltest schon die richtigen GadgetIDs nehmen, also 1 und 2, nicht beide male 0...

Verfasst: 18.03.2007 16:16
von by night
Hm ... Er sagt mir "EventGadgetID() is not a function, array, makro or linked list"