如何在MFC中保存.wav文件(使用文件对话框)

时间:2019-02-20 01:29:23

标签: c++ mfc

void CRecordToMFCDlg::OnBnClickedButton7()
{
    /*TCHAR szFilter[] = _T("모든 파일(*.wav) || *.wav ||");
    CFileDialog dlg(FALSE, _T("all files"), _T("*.wav"),OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT, szFilter);
    if (dlg.DoModal() == IDOK)
    {
        AfxMessageBox(dlg.GetPathName());

    }*/



    TCHAR szFilter[] = _T("wavefile(*.wav) || *.wav ||");
    CFileDialog dlgFile
    (false, _T("wavefile files"), _T("*.wav"), /*OFN_HIDEREADONLY |*/ OFN_OVERWRITEPROMPT, szFilter);

    if (IDOK == dlgFile.DoModal())
    {

        CString strPathName = dlgFile.GetPathName();


        CFile fScheduleWrite;
        if (!fScheduleWrite.Open
        (strPathName, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary))
        {
            AfxMessageBox(_T("File Write Open Error"));
            return;
        }

    }

}

此代码可以保存文件,但是没有数据,我认为该代码无法保存我的记录文件,因为它无法接收记录数据。我怎么解决这个问题?是否需要相关的wave文件标题或格式?请回答我,如有必要,请上传标头和代码。请

1 个答案:

答案 0 :(得分:1)

您显示的代码从用户获取目标文件名,然后创建文件,但不会尝试将任何数据写入该文件。

fScheduleWrite.Open()成功后,您需要根据需要将WAV数据写入文件。

这里没有人可以帮助您,因为您没有指出WAV数据来自何处或如何生成,因此您可以访问它进行保存。可以产生WAV数据的方式很多,API也很多,很多库。