WAVEFORMATEX waveFormat;
HWAVEIN hWaveIn; waveFormat.wFormatTag = WAVE_FORMAT_PCM;
waveFormat.nChannels = 1;
waveFormat.nSamplesPerSec = 11025L;
waveFormat.nAvgBytesPerSec = 11025L;
waveFormat.nBlockAlign = 1;
waveFormat.wBitsPerSample = 1000;
waveFormat.cbSize = 8;

UINT err = waveInOpen(&hWaveIn,1,&waveFormat,NULL, 0, CALLBACK_NULL );
我只想得到设备句柄。能详细说说更好。Thanks

解决方案 »

  1.   

    MMRESULT waveInOpen(
      LPHWAVEIN       phwi,      
      UINT_PTR       uDeviceID,  
      LPWAVEFORMATEX pwfx,       
      DWORD_PTR      dwCallback, 
      DWORD_PTR      dwCallbackInstance, 
      DWORD          fdwOpen     
      );UINT err = waveInOpen(&hWaveIn,1,&waveFormat,NULL, 0, CALLBACK_NULL, 还差2个参数);
      

  2.   

        * LPHWAVEIN phwi 為一指針,以指示返回輸入設備。
        * UINT_PTR uDeviceID 乃所用波形輸入設備之ID。若此為 WAVE_MAPPER,系統則會自動尋找合適設備。
        * LPWAVEFORMATEX pwfx ,指向波形聲音格式數據類型(WAVEFORMAT)之指針。
        * DWORD_PTR dwCallback 为指向回调函数或窗口句柄的指针,用于处理波形声音输入过程中产生的消息。
        * DWORD_PTR dwCallbackInstance为传递给回调函数的数据,以回调函数的参数方式传递。注意:若回调方式为窗口方式,该项不适用。
        * DWORD fdwOpen用于打开一些该函数中定义的选项,通常为0。函数返回值:    * 若函数正常调用,返回值为0,其中可能的错误及返回值为︰
        * MMSYSERR_BADDEVICEID = 2; {设备ID超界};
        * MMSYSERR_ALLOCATED = 4; {指定的资源已被分配};
        * MMSYSERR_NODRIVER = 6; {没有安装驱动程序};
        * MMSYSERR_NOMEM = 7; {不能分配或锁定内存};
        * WAVERR_BADFORMAT = 32; {设备不支持请求的波形格式}
      

  3.   

    CSDN不行了。结贴有点失望。。同样的帖子,CodeProject访问量及回答率大多了。。再不在这里面提问了
      

  4.   

    我以前的wfx.cbSize=sizeof(WAVEFORMATEX);
    wfx.wFormatTag=WAVE_FORMAT_PCM;
    wfx.nChannels=1;
    wfx.nSamplesPerSec=44100;
    wfx.nAvgBytesPerSec=44100*2;
    wfx.nBlockAlign=2;
    wfx.wBitsPerSample=16;
    waveInOpen(&wavein,WAVE_MAPPER,&wfx,(DWORD)&waveInProc,0,CALLBACK_FUNCTION);
      

  5.   

    恩,谢谢你 。我在codeproject中解决了