以下是一个实现录音、回放同步的程序代码:
(只贴出了一部分,后续一齐贴出)void CTVoicePlayDlg::OnMM_WIM_DATA(UINT wParam, LONG lParam)
{//当缓存已满或者停止录音时的消息

if(bIsStop)
{
waveInClose (hWaveIn) ;  //关闭录音
return;
}

    if(bIsBuffer1)
{
pWaveHdr1->lpData=(LPTSTR)pBuffer2;  //第一块播放完毕换第二块
bIsBuffer1=0;
pWaveHdr2->lpData=(LPTSTR)pBuffer1;
}
else
{
pWaveHdr1->lpData=(LPTSTR)pBuffer1;  //第二块播放完毕换第一块
bIsBuffer1=1;
pWaveHdr2->lpData=(LPTSTR)pBuffer2;
}

waveOutWrite (hWaveOut, pWaveHdr2, sizeof (WAVEHDR)) ;
waveInAddBuffer (hWaveIn, pWaveHdr1, sizeof (WAVEHDR)) ;
}
不过,这个东西延时比较大,主要就在上面这段代码,怎么会执行那么多时间。