播放 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 

name soundName 是你提供用于引用此 WAVE 资源的名称的占位符。 像加载和访问其他应用程序定义的 Windows 资源一样,可以加载和访问 WAVE 资源。 以下示例中的 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");