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文件呢?替换可以吗? 这问题困扰我很多天了,求解救!!!!
{
// 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文件呢?替换可以吗? 这问题困扰我很多天了,求解救!!!!
MCIWndSave(mciwav,m_path);
可以使用绝对路径试试看 L"c:\\a.wav" 或者先SetCurrentDirectory设置当前路径
用这个也不行,提示错误"error C2440: 'type cast' : cannot convert from 'class CString' to 'void *'"