如何从资源文件直接播放WAV文件

解决方案 »

  1.   

    具体可以参照这个链接:
    http://www.vchome.net/tech/multimedia/multimedia7.htm
      

  2.   

    PlaySound要文件名的,我要生成个.exe文件,里面有声音, 不带文件夹的
      

  3.   

    PlaySound("ID_WAVE",HInstance, SND_RESOURCE); 
      

  4.   

    PlaySound(MAKEINTRESOURCE(IDR_WAVE_WIN), NULL, SND_SYNC | SND_RESOURCE ); IDR_WAVE_WIN为你的wave在资源中的ID
      

  5.   

    还可以这样
      HANDLE ResHandle; 
      BYTE *WavData;   ResHandle = FindResource(HInstance, "MAIL", "WAVE"); 
      ResHandle = LoadResource(HInstance, ResHandle); 
      WavData = (unsigned char *)LockResource(ResHandle);   PlaySound(WavData, NULL, SND_MEMORY);   FreeResource(ResHandle); 
      

  6.   

    PlaySound( MAKEINTRESOURCE(IDR_WAVE5),NULL,SND_ASYNC|SND_RESOURCE|SND_NODEFAULT);
    IDR_WAVE5 资源里好象不能改名
      

  7.   

    //从内存中读取WAV文件 ////////////////////////////////////////////////////////////////////////////
    HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_SWFMAIN), TEXT("WAV"));
    if (NULL == hRsrc)
    return ;
    //获取资源的大小
    DWORD dwSize = SizeofResource(NULL, hRsrc); 
    DWORD dwWrite=0;
    if (0 == dwSize)
    return ;
    //加载资源
    HGLOBAL hGlobal = LoadResource(NULL, hRsrc); 
    if (NULL == hGlobal)
    return ;
    //锁定资源
    LPVOID pBuffer = LockResource(hGlobal); 
    CString strFilePath="D:\\wav\\1.wav";
    HANDLE fp=::CreateFile(strFilePath,GENERIC_WRITE|GENERIC_READ, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (!WriteFile(fp,pBuffer,dwSize,&dwWrite,NULL))
    {
    AfxMessageBox("初始化wav失败");
    return ;
    } CloseHandle (fp);
    FreeResource (hGlobal);