大家好!
这个程序是实现音频数据采集。 当点击一个按钮就启动一个线程,然后就在线程里面处理消息。
我可以提供详细代码~~  请大家不吝赐教阿!
 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;
}