Home of Gamehacking - Archiv
PlaySound Resource funktioniert nicht ganz - Druckversion

+- Home of Gamehacking - Archiv (http://archiv-homeofgamehacking.de)
+-- Forum: Coding (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=15)
+--- Forum: C, C#, C++, Visual C++ (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=18)
+--- Thema: PlaySound Resource funktioniert nicht ganz (/showthread.php?tid=2381)

Seiten: 1 2 3


PlaySound Resource funktioniert nicht ganz - DerBaum - 30.11.2013

Hallo,

ich benutze Rad Studio und habe einen einfachen C++ Trainer geschrieben. Allerdings bekomme ich keine Soundausgabe (siehe Code), wenn ich jedoch PlaySound + eine lokale Datei nutze wird diese abgespielt, nur bei Resourcen nicht.

Unit1.h:

Code:
#include "resource.h"
[...]
PlaySound(MAKEINTRESOURCE(100),  GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC);


resource.h:

Code:
#define IDR_WAVE1 100


resource.rc:

Code:
#include "resource.h"
IDR_WAVE1 WAVE "Resources\\activated.wav"


Ich habe die Resouce Datei bzw. die activated.wav über Projekt -> Ressourcen und Bilder -> Hinzufügen eingebunden. Sie ist vom Typ RCDATA (Wav gibt es dort nicht, nur ICON, BITMAP, CURSOR, RCDATA und FONT)

Im Treeview sieht es wie folgt aus:

Code:
Resources\
   activated.wav


Die resource.h und resource.rc habe ich manuell erstellt. Es wird zwar nach dem Kompilieren eine *.rc erstellt von Rad Studio namens: Project1_resources.rc mit dem Inhalt:

Code:
activated RCDATA "Resources\\activated.wav"

aber damit kann ich nichts anfangen.


RE: PlaySound Resource funktioniert nicht ganz - Acubra - 30.11.2013

Hey,
mir fällt auf Anhieb eigentlich kein Fehler auf. Genau so mache ich es auch und hatte noch nie Probleme (allerdings hab ich VS als IDE).
Du kannst ja mal versuchen den Inhalt der Project1_resources.rc mit deiner selbstgeschriebenen ressources.rc zu ersetzen.


RE: PlaySound Resource funktioniert nicht ganz - ABartX - 30.11.2013

ist die Project1_resources.rc datei nicht so was wie eine inhalts datei für die Project1_resources.res datei Huh
in delphi jedenfalls muss man die .res-datei einbinden.


greetz ABartX


RE: PlaySound Resource funktioniert nicht ganz - DerBaum - 01.12.2013

Ja es befindet sich eine .res Datei im Ordner, aber wie mache ich das denn nun mit dem Einbinden?


RE: PlaySound Resource funktioniert nicht ganz - ABartX - 01.12.2013

ich habe ev. den fehler gefunden Wink
du musst anstelle der zahl den define namen in "MAKEINTRESOURCE" eingeben, dann sollte das abspielen der .wav funktionieren:

Zitat:PlaySound(MAKEINTRESOURCE(IDR_WAVE1), GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC);

greetz ABartX


p.s: wenn du die resource.rc angibst, sollte der linker die erstellte .res-datei automatisch im projekt einbinden.


RE: PlaySound Resource funktioniert nicht ganz - iNvIcTUs oRCuS - 01.12.2013

Ich denke das dürfte nicht die Lösung sein, denn die Wave wird ja in der "resource.h" definiert...
[code=C]#define IDR_WAVE1 100[/code]

IDR_WAVE1 wird hier als 100 definiert...

Was mich aber etwas wundert - Warum ist der zweite Parameter "Null"?
Ich hab zwar kein Plan von C++ aber laut MSDN:
[code=C]BOOL PlaySound(
LPCTSTR pszSound,
HMODULE hmod,
DWORD fdwSound
);[/code]

Und weiter...
MSDN schrieb:hmod

Handle to the executable file that contains the resource to be loaded. This parameter must be NULL unless SND_RESOURCE is specified in fdwSound.



RE: PlaySound Resource funktioniert nicht ganz - DerBaum - 01.12.2013

Ich habe die Funktion mehrfach recherchiert und immer wurde NULL angegeben außer einmal, wo jemand die Sound Datei in einer DLL hatte. Das mit dem Namen habe ich schon versucht. Die *.res Datei wurde ja schon durch Rad Studio erstellt. Liegt es vielleicht an Rad Studio selbst? Ich hab das in VS noch nicht probiert, aber vielleicht kann Rad Studio einfach keine WAV als Resource importieren, deshalb auch RCDATA.

Accubra schreibt doch in C++ oder? Vielleicht kann er mir ja helfen.


RE: PlaySound Resource funktioniert nicht ganz - iNvIcTUs oRCuS - 01.12.2013

Glaub ich nicht das dass an RAD Studio liegt...
Ich nutze zwar die Delphi Umgebung aber kann da innerhalb der IDE auch keine Wave Datei als Ressource einbinden.
Ich mache das extern... Schreibe mir praktisch die Script Datei und compiliere diese auch extern bevor ich diese dann ins Projekt einbinde...


RE: PlaySound Resource funktioniert nicht ganz - ABartX - 01.12.2013

hab noch folgendes gefunden:

PlaySound function

With the help of my colleage, I have solved the the problem when compiling with the PlaySound function. Here is the solution:

1. Include the following header files in this order:

#include "windows.h"
#include "mmsystem.h"

2. follow the following steps to add winmm.lib to the linker (assuming Visual Studio 2010):

a. Right click the project name in the Solution Explorer and select "Property".
b. On the left pane of the Property window, select "Linker" and then "Input"
c. On the right pane, type winmm.lib in the "Additional Dependencies" row.
d. Click "Apply" and then "OK".

You are now ready to compile and play .wav files.


RE: PlaySound Resource funktioniert nicht ganz - DerBaum - 01.12.2013

Kann das im Linker im Rad Studio nicht finden, also wo man das einbinden soll aber da es wie ich schon schrieb bei externen Audiodateien funktioniert, gehe ich nicht davon aus das das nun das Problem ist.

Meine Vermutung ist eher das irgendwas mit den Resourcen nicht stimmt. Komischerweise wird die *.res und die *.rc zwar nach dem Einbinden und Kompilieren erstellt, taucht aber nicht im Solution Explorer in Rad Studio auf...