Play Wav resource

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

Well, this doesn’t really deal with MFC, but its useful knowledge if you
don’t know how..

Parts of this code I ripped from VC++ 4.1 help, but it was outdated and
didn’t come close to working.

First of all you need to add the wave files to the .rc file manually
like so:

<NameOfSound> WAVE <Location of WAVE.>

Example being

Cool WAVE C:projectssoundscool.wav

Then you need to add this function declarion to the class you plan on
using..

BOOL PlayResource(LPSTR lpName)
{
    BOOL bRtn;
    LPSTR lpRes;
    HANDLE hRes;
    HRSRC hResInfo;
    HINSTANCE Nl=AfxGetInstanceHandle();

    /* Find the WAVE resource. */
    hResInfo= FindResource(Nl,lpName,"WAVE");
    if(hResInfo == NULL)
       return FALSE;
    /* Load the WAVE resource. */

    hRes = LoadResource(Nl,hResInfo);
    if (hRes == NULL)
      return FALSE;

    /* Lock the WAVE resource and play it. */
    lpRes=(LPSTR)LockResource(hRes);
    if(lpRes==NULL)
      return FALSE;

    bRtn = sndPlaySound(lpRes, SND_MEMORY | SND_SYNC);
    if(bRtn == NULL)
      return FALSE;

    /* Free the WAVE resource and return success or failure. */
    FreeResource(hRes);
    return TRUE;
}

Then to play the sound you simply use:

PlayResource("<soundname>");

Example being

PlayResource("Cool");

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read