Поделиться через


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