我目前正在使用Scripthook C++为Grand Theft Auto IV编写一个脚本mod。 我一直在使用此模板播放音频文件:Simple C++ MP3 Player Class从资源文件中使用directshow播放音频
我的问题始于试图使用资源中的文件。 我不知道如何加载它们。
每当我尝试使用我的代码从资源加载声音时,游戏就会崩溃。 已经花费数小时浏览谷歌关于如何从资源播放DirectShow音频没有任何结果。
内部资源文件:从硬盘
(resource.h) #define WAV_Sound 106
(resource.rc) WAV_Sound RCDATA "MySound.wav"
加载文件工作正常
Load(TEXT("MySound.wav"));
但是游戏崩溃当我尝试这一个:
// Load from resource #1
LPCWSTR file = MAKEINTRESOURCE(WAV_Sound);
Load(file);
// Load from resource #2
Load((LPCWSTR) WAV_Sound);
希望有人能够帮助我出去了,谢谢!
http://msdn.microsoft.com/en-us/library/windows/desktop/ms648046(v=vs.85).aspx – Cubic 2012-08-17 17:07:49
对不起,但我仍然没有管理如何得到它工作。这就是我设法写的,但当我运行我的脚本时听不到任何音频... 'hExe = LoadLibrary(TEXT(“EMS MOD.asi”)); \t hRes = FindResource(hExe,MAKEINTRESOURCE(WAV_MV_ReportingForDuty),RT_RCDATA); \t hResLoad = LoadResource(hExe,hRes); \t Audio_Load((LPCWSTR)hResLoad); \t Audio_Play();' – Mordecki 2012-08-17 18:16:48
'DirectShow'从资源播放是可能的,但会是一个戏剧性的矫枉过正。如果文件很小,最好的做法是使用LoadResource API并通过传统的'waveOutOpen'和朋友播放(直接:转换while文件,然后将其添加为单个大缓冲区进行播放)。应该有一些压缩音频的教程,以及初学者http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4422&lngWId=3 – 2012-08-17 19:12:13