1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
bool play_sound(sound& snd){
HWAVEOUT out;
HANDLE done=CreateEvent(0,false,false,0);
//IT CRASHES HERE vvv
if(waveOutOpen(&out,0,&snd.format,(DWORD)done,0,CALLBACK_EVENT)!=MMSYSERR_NOERROR){
MessageBox(0,"ERROR: Failed to open soundcard","ERROR",MB_OK|MB_ICONEXCLAMATION);
return false;}
//IT CRASHES THERE ^^^
if (waveOutPrepareHeader(out,&snd.data,sizeof(WAVEHDR))!=MMSYSERR_NOERROR){
MessageBox(0,"ERROR: Failed to prepare header","ERROR",MB_OK|MB_ICONEXCLAMATION);
return false;}
ResetEvent(done);
if(waveOutWrite(out,&snd.data,sizeof(WAVEHDR))!=MMSYSERR_NOERROR){
MessageBox(0,"ERROR: Failed to write to soundcard","ERROR",MB_OK|MB_ICONEXCLAMATION);
return false;}
if(WaitForSingleObject(done,INFINITE)!=WAIT_OBJECT_0){
MessageBox(0,"ERROR: Failed to wait for sound to finish","ERROR",MB_OK|MB_ICONEXCLAMATION);
return false;}
if(waveOutUnprepareHeader(out,&snd.data,sizeof(WAVEHDR))!=MMSYSERR_NOERROR){
MessageBox(0,"ERROR: Failed to unprepare header","ERROR",MB_OK|MB_ICONEXCLAMATION);
return false;}
if(waveOutClose(out)!=MMSYSERR_NOERROR){
MessageBox(0,"ERROR: Failed to close soundcard","ERROR",MB_OK|MB_ICONEXCLAMATION);
return false;}
CloseHandle(done);
return true;}
|