Воспроизведение ресурсов 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");