C++ C++;利用资源播放声音
我正在尝试播放一个特定的.wav文件,它是我在项目中作为资源添加的。 当我运行程序时,不会播放声音 我试过做:C++ C++;利用资源播放声音,c++,resources,playsound,C++,Resources,Playsound,我正在尝试播放一个特定的.wav文件,它是我在项目中作为资源添加的。 当我运行程序时,不会播放声音 我试过做: PlaySound(文本(“系统开始”),空,SND_别名) 正确地工作和播放 然后,我尝试使用以下工具定义wav文件在我的计算机上的位置: PlaySound(文本(“D:/TestSounds/sound1.wav”),NULL,SND_ASYNC) 这也是正确的 但是当我尝试从资源运行文件时,问题就开始了 我试过做: PlaySound(MAKEINTRESOURCE(IDR_W
PlaySound(文本(“系统开始”),空,SND_别名)代码>
正确地工作和播放
然后,我尝试使用以下工具定义wav文件在我的计算机上的位置:
PlaySound(文本(“D:/TestSounds/sound1.wav”),NULL,SND_ASYNC)代码>
这也是正确的
但是当我尝试从资源运行文件时,问题就开始了
我试过做:
PlaySound(MAKEINTRESOURCE(IDR_WAVE1)、GetModuleHandle(NULL)、SND_资源)代码>
并且还尝试使用
BOOL PlayResource(LPCWSTR lpName)
{
BOOL bRtn;
HANDLE hRes;
// Find the WAVE resource.
HRSRC hResInfo = FindResource(NULL, lpName, TEXT("WAVE"));
if (hResInfo == NULL)
return FALSE;
// Load the WAVE resource.
hRes = LoadResource(NULL, hResInfo);
if (hRes == NULL)
return FALSE;
// Lock the WAVE resource and play it.
const char* lpRes = (const char*)LockResource(hRes);
if (lpRes != NULL) {
bRtn = PlaySound((LPCUWSTR)lpRes, NULL, SND_MEMORY | SND_ASYNC);
UnlockResource(hRes);
}
else
bRtn = 0;
// Free the WAVE resource and return success or failure.
FreeResource(hRes);
return bRtn;
}
非常感谢您的帮助在.rc文件中显示将WAV文件添加到资源中的行。@IgorTandetnik IDR\u WAVE1 WAVE“D:\\TestSounds\\sound1.WAV”在编译.rc时是否定义为宏?查看如果执行播放声音(文本(“IDR_WAVE1”)、GetModuleHandle(NULL)、SND_资源)时会发生什么代码>(即,将IDR\u WAVE1
作为字符串而不是int传递)。它在资源中定义为#define IDR\u WAVE1 101。我也尝试将其作为字符串传递,但仍然没有声音在playsource
中,您应该调用sndPlaySound
,而不是PlaySound
。虽然一行PlaySound
调用也应该可以工作;我不知道为什么没有。