按了录音按钮 ,不录音 。

以下是源码
void CRecDlg::OnRec()
{
// TODO: Add your control notification handler code here
pBuffer1=(PBYTE)malloc(INP_BUFFER_SIZE);
if(!pBuffer1)
{
free(pBuffer1);
// MessageBeep(MB_ICONEXCLAMATION); //播放一个系统定义的声音
AfxMessageBox("Memory error!");
return;
}

//WAVEFORMATEX
waveform.wFormatTag=WAVE_FORMAT_PCM;
waveform.nChannels=1;
waveform.nSamplesPerSec=11025;
waveform.nAvgBytesPerSec=11025;
waveform.nBlockAlign=1;
waveform.wBitsPerSample=8;
waveform.cbSize=0;

//waveInOpen 成功返回 MMSYSERR_NOERROR
if(waveInOpen(&hWaveIn,WAVE_MAPPER,&waveform,(DWORD)this->m_hWnd,NULL,CALLBACK_WINDOW))
{
free(pBuffer1);
MessageBeep(MB_ICONEXCLAMATION); //播放一个系统定义的声音
AfxMessageBox("Audio can not be open!");
}

//WAVEHDR
pWaveHdr1->lpData=(LPTSTR)pBuffer1;
pWaveHdr1->dwBufferLength=INP_BUFFER_SIZE;
pWaveHdr1->dwBytesRecorded=0;
pWaveHdr1->dwUser=0;
pWaveHdr1->dwLoops=1;
pWaveHdr1->lpNext=NULL;
pWaveHdr1->reserved=0;

//为录音设备准备缓存
waveInPrepareHeader(hWaveIn,pWaveHdr1,sizeof(WAVEHDR));

//给输入设备增加一个缓存
waveInAddBuffer(hWaveIn,pWaveHdr1,sizeof(WAVEHDR));

//开始录音
if(waveInStart (hWaveIn))
{
AfxMessageBox("waveInStrat error!");
}

}

跟踪了后,发现只调用了MM_WIM_OPEN,并未调用MM_WIM_DATA
之后按了STOP、再按PLAY,再进行录音时就能录了。
不知哪里出问题了
已解决了 , //WAVEHDR 少了一个 标记 ,

没返回,你插一个返回...
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网