159上位机VC MFC声音录制播放与保存操作
159上位机VC MFC声音录制播放与保存操作
功能展示
录音软件都可以进行声音的录制与保存操作,我们当前例程也实现了声音的录制,播放与保存操作,效果如图; 要点提示 例程主要是通过MCI函数进行声音的录制和保存功能;通过MCIWndCreate()创建一个窗口进行录音,创建后的窗口句柄可以用在函数MCIWndNew()中进行打开录音设备操作; 通过MCIWndCanRecord()判断是否可录音; 通过MCIWndRecord()进行录音; 通过MCIWndStop()停止录制; 通过MCIWndCanPlay()判断是否可播放 通过MCIWndPlay()进行录制语音的播放; 通过MCIWndCanSave()判断是否可以保存操作; 通过MCIWndSave()进行保存操作;
实现功能 1.新建基于对话框的应用程序 2.在进行录音功能实现前得加载操作所用到的头文件及库文件; #include<vfw.h>#pragma comment(lib,“vfw32.lib”)再添加变量 HWND m_hMCIWave;作为贯穿程序的录音窗口句柄;
3.拖拽四个按钮分别实现开始录音,停止录音,保存录音,播放录音功能; - void CGkbc8Dlg::OnRecord()
- {
- SetDlgItemText(IDC_NOTICE,"录音中...");
- //><
- MCIWndClose(m_hMCIWave);
- m_hMCIWave=MCIWndCreate(this->m_hWnd,::AfxGetApp()->m_hInstance,WS_CAPTION,NULL);
- MCIWndNew(m_hMCIWave,"waveaudio");
- if(MCIWndCanRecord(m_hMCIWave))
- MCIWndRecord(m_hMCIWave);
- }
- void CGkbc8Dlg::OnStop()
- {
- SetDlgItemText(IDC_NOTICE,"待录音...");
- //><
- MCIWndStop(m_hMCIWave);
- }
复制代码- void CGkbc8Dlg::OnTest()
- {
- if(MCIWndCanPlay(m_hMCIWave))
- MCIWndPlay(m_hMCIWave);
- //><
- SetDlgItemText(IDC_NOTICE,"");
- }
- void CGkbc8Dlg::OnSave()
- {
- if (MCIWndCanSave(m_hMCIWave))
- {
- //MCIWndSave(m_hMCIWave,-1);//弹出默认对话框
- CFileDialog Dlg(FALSE,".wav",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"wav File(*.wav)|*.wav||");
- if(Dlg.DoModal() == IDOK)
- {
- CString sPath;
- sPath = Dlg.GetPathName();//获取路径及文件名
- WCHAR wszFilename[MAX_PATH] = {0};//转换路径名为unicode类型
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, LPCSTR(sPath), sPath.GetLength(), wszFilename, sizeof(wszFilename));
- MCIWndSave(m_hMCIWave, wszFilename);
- }
- }
- }
复制代码我们来演示下功能实现的整个过程
|