Code:
Sound::Sound(char* FileName)
{
//Load our Wave File
Buffer[4]='\0';
MusicFile=CreateFile(FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
ReadFile(MusicFile,Buffer,4,&RiffRead,NULL);
ReadFile(MusicFile,&LengthOfSound,4,&LengthBuffer,NULL);
ReadFile(MusicFile,Buffer,4,&WaveRead,NULL);
ReadFile(MusicFile,Buffer,4,&FmtRead,NULL);
ReadFile(MusicFile,&LengthOfChunk,4,&LengthOfChunkBuffer,NULL);
TEMP=new char[LengthOfChunk];
ReadFile(MusicFile,TEMP,LengthOfChunk,&RiffRead,NULL);
ReadFile(MusicFile,Buffer,4,&WaveRead,NULL);
ReadFile(MusicFile,&LengthOfSoundWave,4,&LengthBufferWave,NULL);
//allocate enough memory to copy of sound data
SoundData=new char[LengthOfSoundWave];
ReadFile(MusicFile,SoundData,LengthOfSoundWave,&LengthBuffer,NULL);
WaveHeader=new WAVEHDR [sizeof (WAVEHDR)];
waveformat.wFormatTag = WAVE_FORMAT_PCM ;
waveformat.nChannels = 1 ;
waveformat.nSamplesPerSec = 11025;
waveformat.nAvgBytesPerSec = 11025;
waveformat.nBlockAlign = 1 ;
waveformat.wBitsPerSample = 8 ;
waveformat.cbSize = 0 ;
waveOutOpen ((HWAVEOUT*)WaveOut, WAVE_MAPPER, &waveformat, NULL, 0, CALLBACK_WINDOW);
WaveHeader->lpData=SoundData;
WaveHeader->dwBufferLength=LengthOfSoundWave;
WaveHeader->dwBytesRecorded = 0 ;
WaveHeader->dwUser = 0 ;
WaveHeader->dwFlags = 0 ;
WaveHeader->dwLoops = 1 ;
WaveHeader->lpNext = NULL ;
WaveHeader->reserved = 0 ;
waveOutPrepareHeader (WaveOut, WaveHeader,sizeof (WAVEHDR)) ;
waveOutWrite (WaveOut, WaveHeader, sizeof (WAVEHDR)) ;
}