共用方式為


播放 WAVE 資源

與此頁面相關聯的功能,波形音訊,是舊版功能。 WASAPIAudio Graphs已取代它。 WASAPI音訊圖形 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式代碼盡可能使用 WASAPIAudio Graphs,而不是 波波音頻。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

您可以使用 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 資源的名稱。 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");