Bagikan melalui


Memutar Sumber Daya WAVE

[Fitur yang terkait dengan halaman ini, Waveform Audio, adalah fitur warisan. Ini telah digantikan dengan WASAPI dan Audio Graphs. WASAPI dan Audio Graphs telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan WASAPI dan Audio Graphs alih-alih Waveform Audio, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Anda dapat menggunakan fungsi PlaySound untuk memutar suara yang disimpan sebagai sumber. Meskipun ini juga dimungkinkan menggunakan fungsi sndPlaySound, sndPlaySound mengharuskan Anda menemukan, memuat, mengunci, membuka kunci, dan membebaskan sumber daya; PlaySound menyelesaikan semuanya ini dengan satu baris kode.

Contoh PlaySound

PlaySound("SoundName", hInst, SND_RESOURCE | SND_ASYNC); 

Contoh sndPlaySound

Bendera SND_MEMORY menunjukkan bahwa parameter lpszSoundName adalah penunjuk ke gambar dalam memori file WAVE. Untuk menyertakan file WAVE sebagai sumber daya dalam aplikasi, tambahkan entri berikut ke skrip sumber daya aplikasi (. RC) file.

soundName WAVE c:\sounds\bells.wav 

Nama soundName adalah pengganti untuk nama yang Anda berikan untuk merujuk ke sumber daya WAVE ini. Sumber daya WAVE dimuat dan diakses sama seperti sumber daya Windows lain yang ditentukan aplikasi. Fungsi PlayResource dalam contoh berikut memutar sumber daya WAVE tertentu.

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; 
} 

Untuk memutar sumber daya WAVE dengan menggunakan fungsi ini, berikan kepada fungsi sebuah penunjuk ke string yang berisi nama sumber daya, seperti yang ditunjukkan dalam contoh berikut.

PlayResource("soundName");