Musik bei TForm
-
Kann man bei einer ganz normalen TForm Anwendung, wenn man diese startet, einen Hintergrund Sound laufen lassen? Und wenn ja, kann mir jemand sagen wie?????
Bitte um schnelle Antwort!
Danke schon mal im voraus!
-
Du bindest deinem Projekt eine Resource Datei hinzu.
Projekt -> Dem Projekt hinzufügen
Dateiendung .rcIn deinem Projekt Ordner hast du dann Beispielsweise eine .wav Datei die Musik.wav heißt.
In der erstellten RC Datei schreibst duRES_SOUND WAVE "Musik.wav"
Nun gehst du auf TFormCreate und schreibst folgendes
PlaySound("RES_SOUND", NULL, SND_RESOURCE | SND_ASYNC |SND_NOSTOP);
Vergiss nicht das du #include <Mmsystem.h> am Anfang deines Projekts hinzufügst, damit er PlaySound kennt.
Mfg. sven
-
danke schonmal für deine schnelle antwort, doch fubktioniert das mit der ressourcedatei nicht richtig. wie erstelle ich denn eine neue ressource-Datei? Wie ich sie dem Projekt hinzufüge ist mir klar, aber nicht wie ich sie erstelle!
-
einfach mit dem Texteditor eine Datei mit der Endung rc anlegen und dein Zeug reinschreiben. In dem Fall RES_SOUND WAVE "Musik.wav"
greetz KN4CK3R
-
danke!!!!
-
wenn ich das mache, dann zeigt er ziemlich viele Fehlermeldungen an, wegen #include <Mmsystem.h>
-
Aha, und welche?
-
Hallo,
sry habe mich verschrieben, packe den Header nicht an den Anfang, am besten schreibst du ihn unter der Unit1.h
also so:#include "Unit1.h"
#include <Mmsystem.h>Sollte nun keine Fehlermeldungen mehr geben.
Falls doch einfach mal Quellcode posten.Mfg. Sven
-
danke. funktioniert. und wenn ich einen Sound abspielen will (also zum Beispiel eine hupe einmal), wenn ich auf einen Knopf drücke z.b. ? Was muss ich dann machen? das gleiche und das nostop weglassen?
P.S.: ih hab grade noch gemerkt, dass sich die Hintergrundmusik nicht wiederholt. wie kann man das machen?
-
P.s.: ich hab garec gemerkt, dass sich die Hintergrundmusik nicht weiderholt. Wie kann man das ändern.
Bitte um schnelle Antwort, da ich dies für ein Weihnachtsgeschenk brauche! :xmas1: :xmas2:
-
Hallo
Parameter SND_LOOP hinzufügen
MSDN schrieb:
SND_LOOP
The sound plays repeatedly until PlaySound is called again with the pszSound parameter set to NULL. You must also specify the SND_ASYNC flag to indicate an asynchronous sound event.
bis bald
akari
-
1. danke, kann man auch machen, dass nachdem z.B "Musik.wav" zuEnde ist, "Musik2.wav" abgespielt wird?
2. Und wie kann man einen zweiten Sound gleichzeitig abspielen?
-
drummi schrieb:
1. danke, kann man auch machen, dass nachdem z.B "Musik.wav" zuEnde ist, "Musik2.wav" abgespielt wird?
2. Und wie kann man einen zweiten Sound gleichzeitig abspielen?
Was mir immoment noch am wichtigsten ist, ist das hier:
3. Wie kann man die Musik denn stoppen? Wenn ich z.B. auf einen Knopf drücke, wird die aktuelle Musik gestoppt (und eine andere fängt an).
-
Hallo
Punkt 1 und 3 : Ob und wie das geht must du schon in der MSDN oder im WinAPI-Forum nachlesen. Denn PlaySound ist keine Builder-Funktion, sondern wird von Windows gestellt. Falls du mehr Kontrolle über die Wiedergabe und eine echte Builder-Komponente haben willst, dann schau dir TMediaPlayer in der Builder-Hilfe und über die Suchfunktion hier im Forum an.
2. Zweimal die Funktion PlaySound aufrufen bzw. zwei laufende TMediaPlayer-Instanzen? Aber als Hinweis : Beide Möglichkeiten sind nicht für die weitreichenden Anforderungen von Spielen gedacht. Falls du also wirklich mehrfache gestaffelfte Sound-Kanäle brauchst solltest du besser die Sound-Komponente von DirektX verwenden. Was natürlich auch wesentlich komplexer ist als PlaySound.
bis bald
akari
-
ok..., danke. also kann man nicht den sound irgentwie anhalten bzw. stoppen?
-
Hallo
Doch er läßt sich stoppen. Übergib dem ersten Parameter (statt dem Namen einer Datei)eine 0.
MSDN zu erstem Parameter schrieb:
A string that specifies the sound to play. If this parameter is NULL, any currently playing waveform sound is stopped. To stop a non-waveform sound, specify SND_PURGE in the fdwSound parameter.
bis bald
akari
-
danke! hab auch grad hingekriegt, dass erstoppt und eine andere Musik spielt.
Schon geschehen:
Musik läuft
Dann (ButtonClick):
PlaySound("RES_SOUND3",NULL,SND_RESOURCE | SND_ASYNC | SND_LOOP);
Also einfach das NOSTOp weglassen.
Ich hab mich nämlich grade gefragt, wofür das NOSTOP steht!?
-
Hallo
Muß ich jetzt wirklich die ganze Doku zu PlaySound aus der MSDN (bzw. dem SDK das beim Builder ist) herauskopieren?
SND_NOSTOP
The specified sound event will yield to another sound event that is already playing. If a sound cannot be played because the resource needed to generate that sound is busy playing another sound, the function immediately returns FALSE without playing the requested sound.
If this flag is not specified, PlaySound attempts to stop the currently playing sound so that the device can be used to play the new sound.bis bald
akari
-
entschuldige.... *schäm*
-
akari schrieb:
Hallo
Doch er läßt sich stoppen. Übergib dem ersten Parameter (statt dem Namen einer Datei)eine 0.
MSDN zu erstem Parameter schrieb:
A string that specifies the sound to play. If this parameter is NULL, any currently playing waveform sound is stopped. To stop a non-waveform sound, specify SND_PURGE in the fdwSound parameter.
bis bald
akaritschuldgigung. ich hoffe ich darf noch fragen: versteh das nicht richtig mit dem stoppen. Könntest du es mir vllt. freundlicherweise nochmal erklären?