void CVoicetestDlg::OnSave() 
{
// TODO: Add your control notification handler code here
CString m_path;
CFileDialog wav(FALSE,NULL,NULL,OFN_ALLOWMULTISELECT,"wav File(*.wav)|*.wav");

//构造函数创建一个文件保存对话框,并且设定类型过滤
if (wav.DoModal() == IDOK)            //如果选择保存按钮。DoModal实际上实现了对话框的创建、显示、关闭的全过程
{
m_path = wav.GetPathName();   //获得绝对路径和输入的文件名


else
{
return;
}   
if (MCIWndCanSave(mciwav))           //如果能保存
{
MCIWndSave(mciwav,L"a.wav");        //保存成默认的名字a
CopyFile("a.wav",m_path,FALSE);     //把a文件拷贝到另一路径和名字

else
{
MessageBox("can not save");
}
}上面是一个录音的一段代码,录音后点保存,生产一个a.wav的文件,和生产一个自己定义文件名的文件,但自己定义那个文件打不开,然后我重命名加了个“.wav”,声音内容就和a.wav一样了。
   我想问一下为什么不能直接把自己定义的文件名直接生产wav文件呢?还有上面的CopyFile这个函数是复制吧?怎么直接生产我定义的文件名wav文件,而不用再生成a.wav文件呢?替换可以吗?    这问题困扰我很多天了,求解救!!!!

解决方案 »

  1.   

    你希望是这样:
    MCIWndSave(mciwav,m_path); 
      

  2.   

    L"a.wav" 这个文件会存在当前路径,但当前路径是不固定的
    可以使用绝对路径试试看 L"c:\\a.wav" 或者先SetCurrentDirectory设置当前路径 
      

  3.   

    MCIWndSave(mciwav,m_path); 
    用这个也不行,提示错误"error C2440: 'type cast' : cannot convert from 'class CString' to 'void *'"
      

  4.   

    怎么自定义文件名而不用输入“.wav”格式,就直接保存为wav格式文件啊?