Sounds in C++

HarryXVI

Erfahrenes Mitglied
Ich habe ein Programm geschrieben, was verschiedene Strings ausgibt...Jetzt möchte ich bei der Passage "Das Telefon klingelt." den Ringring-Ton aus NetMeeting einfügen. Ich habe dabei 2 Probleme.

1. In welchem Ordner steht "ringin.wav"?
2. Wie baue ich das Rringring so in das Programm ein, dass, wenn ich Enter drücke (cin.get), der Text mit dem Ton kommt?

Am besten wäre, wenn ihr den kompletten Code hier reinschreiben könntet, anstatt nur einzelne Stücke.
 
Das wird nicht ganz so einfach.

1) Keine Ahnung wie das bei Netmeeting ist, aber Sounds müssen nicht als separate .wav existieren, sondern können auch in der .exe oder einer .dll enthalten sein. Vermutlich wirst du schneller fündig, wenn du mal nach free download zu passenden sounds googelst.

2) Um Sounds in Windows abspielen zu können musst du zuerst mal auf libwinmm.a linken, das ist kein Code sondern eine Linker Einstellung im Compiler und hat schon den Nachteil, dass alle OS die keine Multimedia Erweiterungen installiert haben (z.B. Win2000 in Standard-Installation) damit nicht umgehen können, sprich dein Program crasht gleich beim Start.

3) Für dein eigenes Programm musst du dir ebenfalls überlegen, ob du den Sound aus einer externen .wav laden willst, was bedeutet, der User kann sie löschen, überschreiben, usw, oder ob du sie als resource in die .exe einbinden willst.
In jedem Fall stückelt sich der Code quer durchs Programm, weil Resourcen nicht an der gleichen Stelle definiert, geladen und ausgegeben werden.

MSDN gibt recht ausführlich Auskunft zum Thema, unter Stichwort PlaySound()
Auch Google spuckt unter gleichem Suchwort einiges aus.
 
Zuletzt bearbeitet:
ok, aber zwei sachen versteh ich noch nicht:

1. was ist msdn?
3. wie finde ich diese linker-einstellung "libwinmm.a"?
 
1. http://msdn2.microsoft.com/de-de/library/default.aspx
Hier findest du Referencen zu fast allen nützlichen Funktionen etc.

2. Kommt ganz drauf an mit was du kompilierst.
Bei Dev-Cpp kannst du es im Projekteigenschaften einstellen
Bei MinGW und Cygwin musst du den Pfad beim kompilieren angeben.

Und "libwinmm.a" ist keine Einstellung sondern eine Lib die du mitlinken musst.
 
Zuletzt bearbeitet:
1. Projekt Öffnen
2. Links im Projekt Fenster Leiste rechtsklick auf deinen Projektnamen klicken und
"Projekt Optionen" auswählen oder einfach ALT+P drücken.
3. Dann im Untererzeichnis "Paramter"
"Bibliothek/Objekt hinzufügen"-Schaltfläche drücken und nach "libwinmm.a" suchen.
Dürfte hier sein "..../Dev-Cpp/lib/libwinmm.a" und auf öffnen drücken.

Fertig, nun wird die beim kompilieren automatisch mitgelinkt.
 
das linken hat geklappt. Jetzt hat mir mein Freund, der auch C++ lernt, gesagt, dass ich folgendes machen soll:

1. "mmsystem.h" includen
2. den befehl "sndPlaySound("datei.wav", SND_ASYNC) verwenden

Im Ordner "inlcude" von "Dev-Cpp" hab ich mmsyste.h gefunden, aber der kompiler möchte sie nicht includen, wahrscheinlich, weil sie sonst nur für C gebraucht wird (deshalb auch .h)
Folglich erkennt er auch den Befehl nicht.

Was kann ich tun?

Der Anfang sieht bei mir jetzt so aus:
#include <iostream>
#include <mmsystem.h>
 
Zuletzt bearbeitet:
Im Ordner "inlcude" von "Dev-Cpp" hab ich mmsyste.h gefunden, aber der kompiler möchte sie nicht includen, wahrscheinlich, weil sie sonst nur für C gebraucht wird (deshalb auch .h)

also das wäre mir neu.
das die header Datei in C geschrieben wurde wirkt sich normalerweise auf kein c++ programm aus, weil c++ sozusagen eine erweiterung von standard-C ist, also zusätzliche funktionen hat.

greetz
 
Grundsätzlich:

libIrgendwas.a = Linker (wie oben beschrieben)

Irgendwas.h = include im Programmcode, z.B.

#include <windows.h>

Irgendwas ohne Erweiterung, genau wie Irgendwas.h, z.B.

#include <sstream>

Was ich selbst gern wüsste:
Setzt mmsystem.h die libwinmm.a voraus?
 
Zuletzt bearbeitet:
Zurück