播放 WAVE 资源
可以使用 PlaySound 函数播放作为资源存储的声音。 尽管也可以使用 sndPlaySound 函数执行此操作, 但 sndPlaySound 要求找到、加载、锁定、解锁和释放资源: PlaySound 使用单行代码实现所有这些操作。
PlaySound 示例
PlaySound("SoundName", hInst, SND_RESOURCE | SND_ASYNC);
sndPlaySound 示例
SND_MEMORY标志指示 lpszSoundName 参数是指向 WAVE 文件的内存中图像的指针。 若要将 WAVE 文件作为资源包含在应用程序中,请将以下条目添加到应用程序的资源脚本 (。RC) 文件。
soundName WAVE c:\sounds\bells.wav
名称 soundName 是用于引用此 WAVE 资源的名称的占位符。 WAVE 资源是加载和访问的,就像其他应用程序定义的Windows资源一样。 以下示例中的 PlayResource 函数播放指定的 WAVE 资源。
BOOL PlayResource(LPSTR lpName)
{
BOOL bRtn;
LPSTR lpRes;
HANDLE hResInfo, hRes;
// Find the WAVE resource.
hResInfo = FindResource(hInst, lpName, "WAVE");
if (hResInfo == NULL)
return FALSE;
// Load the WAVE resource.
hRes = LoadResource(hInst, hResInfo);
if (hRes == NULL)
return FALSE;
// Lock the WAVE resource and play it.
lpRes = LockResource(hRes);
if (lpRes != NULL) {
bRtn = sndPlaySound(lpRes, SND_MEMORY | SND_SYNC |
SND_NODEFAULT);
UnlockResource(hRes);
}
else
bRtn = 0;
// Free the WAVE resource and return success or failure.
FreeResource(hRes);
return bRtn;
}
若要使用此函数播放 WAVE 资源,请将指针传递给函数,指向包含资源名称的字符串的指针,如以下示例所示。
PlayResource("soundName");