我用MCI来录音代码如下 
          MCI_RECORD_PARMS mcirecordparms;
 mcirecordparms.dwFrom=0;
 mcirecordparms.dwTo=3000;
 MCI_OPEN_PARMS mciopenparms;
 mciopenparms.lpstrDeviceType=_T("waveaudio");
 mciopenparms.lpstrElementName=_T("");
 DWORD openerror=mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)( LPVOID)&mciopenparms);
 if(openerror!=0)
 MessageBox(_T("error in open"));
 m_device_id=mciopenparms.wDeviceID;
 nrecord=1;
 DWORD error=mciSendCommand(m_device_id,MCI_RECORD,0,(DWORD)(LPVOID)&mcirecordparms);
 if(error!=0)
 {
char *errof=new char[300];
mciGetErrorString(error,(LPWSTR)errof,300);
CString str;
str.Format(_T("%s"),errof);
    MessageBox(str);
          }可是点保存以后提示出错原因是
无法保存指定文件,请确认是否拥有足够的磁盘空间,而且计算机是否仍与网络连接。请问这是什么原因啊???
大家帮忙回答下,谢谢了

解决方案 »

  1.   

     mciSendCommand(m_device_id,MCI_STOP,0,NULL);
    MCI_SAVE_PARMS saveparms;
    CFileDialog dialog(FALSE,_T("wav"),NULL,4|2,_T("波形文件名称(*.wav)|*.wav||"),this);
    if(dialog.DoModal()==IDCANCEL)
    return;
    saveparms.lpfilename=dialog.GetPathName();
    if(!dialog.GetPathName())
    MessageBox(_T("error in path"));
    DWORD saveerror=mciSendCommand(m_device_id,MCI_SAVE,MCI_SAVE_FILE|MCI_WAIT,(DWORD)(LPVOID)&saveparms);
    if(saveerror)
    {
    char *errof=new char[300];
    mciGetErrorString(saveerror,(LPWSTR)errof,300);
    CString str;
    str.Format(_T("%s"),errof);
        MessageBox(str);
    }不好意思,这个好像才是,那个是录音 的
      

  2.   


    int main(int argc, char *argv[]) 
    {
        
    char *errof=new char[300];  errof[1] =23;
    errof[299] =12;
    errof[2323] =111;
    printf("%d \n", errof[2323]);

    return 0;
    }
      

  3.   

    录音用DirectShow也是可以的,如果是公司用的话,可以考虑商用开发包,AnyChat SDK:http://www.anychat.cn/faq/ ,可以实现音频、视频的录制,接口比较简单。
      

  4.   

    mcirecordparms.dwTo=3000; 你改小点(30)看看有什么问题。