大家好!
这个程序是实现音频数据采集。 当点击一个按钮就启动一个线程,然后就在线程里面处理消息。
我可以提供详细代码~~ 请大家不吝赐教阿!
DWORD WINAPI CRecordHWndDlg::AudioOutThreadProc( LPVOID lpParameter )
{ waveout *pWaveOut = (waveout*)malloc(sizeof(waveout));
pWaveOut->dwDataLength = ((waveout*)lpParameter)->dwDataLength;
pWaveOut->hWaveOut = ((waveout*)lpParameter)->hWaveOut;
pWaveOut->pSaveBuffer = ((waveout*)lpParameter)->pSaveBuffer;
(waveout*)lpParameter;
MSG msg;
WAVEHDR *Wavehdr; while(GetMessage(&msg,0, 0, 0))//(&msg,0,0,0))
{
switch(msg.message )
{
case WOM_OPEN:
Wavehdr->lpData = (char*)(pWaveOut->pSaveBuffer);
Wavehdr->dwBufferLength = pWaveOut->dwDataLength ;
Wavehdr->dwBytesRecorded = 0 ;
Wavehdr->dwUser = 0 ;
Wavehdr->dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP ;
Wavehdr->dwLoops = 1 ;
Wavehdr->lpNext = NULL ;
Wavehdr->reserved = 0 ;
waveOutPrepareHeader (pWaveOut->hWaveOut, Wavehdr, sizeof (WAVEHDR)) ; waveOutWrite (pWaveOut->hWaveOut, Wavehdr, sizeof (WAVEHDR)) ;
break;
case WOM_CLOSE:
TRACE("WOM_CLOSE \n");
break;
case WOM_DONE:
waveOutUnprepareHeader (pWaveOut->hWaveOut, Wavehdr, sizeof (WAVEHDR)) ;
free(Wavehdr->lpData);
free(Wavehdr);
waveOutClose (pWaveOut->hWaveOut) ;
break; // default:
// exit(-1);
}
}
TRACE("AudioInThreadProc exit.\n");
//cj add
return msg.wParam;
}
这个程序是实现音频数据采集。 当点击一个按钮就启动一个线程,然后就在线程里面处理消息。
我可以提供详细代码~~ 请大家不吝赐教阿!
DWORD WINAPI CRecordHWndDlg::AudioOutThreadProc( LPVOID lpParameter )
{ waveout *pWaveOut = (waveout*)malloc(sizeof(waveout));
pWaveOut->dwDataLength = ((waveout*)lpParameter)->dwDataLength;
pWaveOut->hWaveOut = ((waveout*)lpParameter)->hWaveOut;
pWaveOut->pSaveBuffer = ((waveout*)lpParameter)->pSaveBuffer;
(waveout*)lpParameter;
MSG msg;
WAVEHDR *Wavehdr; while(GetMessage(&msg,0, 0, 0))//(&msg,0,0,0))
{
switch(msg.message )
{
case WOM_OPEN:
Wavehdr->lpData = (char*)(pWaveOut->pSaveBuffer);
Wavehdr->dwBufferLength = pWaveOut->dwDataLength ;
Wavehdr->dwBytesRecorded = 0 ;
Wavehdr->dwUser = 0 ;
Wavehdr->dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP ;
Wavehdr->dwLoops = 1 ;
Wavehdr->lpNext = NULL ;
Wavehdr->reserved = 0 ;
waveOutPrepareHeader (pWaveOut->hWaveOut, Wavehdr, sizeof (WAVEHDR)) ; waveOutWrite (pWaveOut->hWaveOut, Wavehdr, sizeof (WAVEHDR)) ;
break;
case WOM_CLOSE:
TRACE("WOM_CLOSE \n");
break;
case WOM_DONE:
waveOutUnprepareHeader (pWaveOut->hWaveOut, Wavehdr, sizeof (WAVEHDR)) ;
free(Wavehdr->lpData);
free(Wavehdr);
waveOutClose (pWaveOut->hWaveOut) ;
break; // default:
// exit(-1);
}
}
TRACE("AudioInThreadProc exit.\n");
//cj add
return msg.wParam;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货