我在窗口中放一个按钮控件,单击一次按钮,就调用下面这个自定义的Play方法,此时可以正常播放一个声音,现在的问题是,当我非常快速的连续单击按钮,也就是说不等声音播放结束,就不断的重复调用这个Play方法播放同一个声音文件,就是弹出系统异常框,说某个地址的内存不可读,各位觉得问题出在哪里呢?
int CSounds::Play()
{
if(MMSYSERR_NOERROR != waveOutOpen(NULL,WAVE_MAPPER,(WAVEFORMATEX*)&pFormat,NULL,NULL,WAVE_FORMAT_QUERY))
{
return Close();
} if(MMSYSERR_NOERROR != waveOutOpen(&hWaveOut,WAVE_MAPPER, (WAVEFORMATEX*)&pFormat,
(DWORD)waveOutProc/*(DWORD)hP*/,(DWORD)this,CALLBACK_FUNCTION/*CALLBACK_WINDOW*/))
{
return Close();
}


WaveHead.lpData=(LPSTR)lpData;
WaveHead.dwBufferLength=DataSize;
         WaveHead.dwFlags=0L;
WaveHead.dwLoops=0L;
if(MMSYSERR_NOERROR != waveOutPrepareHeader(hWaveOut,&WaveHead,sizeof(WAVEHDR)))
{
return Close();
} if(MMSYSERR_NOERROR != waveOutWrite(hWaveOut,&WaveHead,sizeof(WAVEHDR)))
{
return Close();
} return TRUE;
}