VC实现录音,放音,保存,打开功能

VC实现录音,放音,保存,打开功能

  实现了录音,放音,打开,保存功能.非常简单,使用的是MSDN里面的MCIWnd来实现的.唉~废话少说了,还是看代码吧!

  用VC建立一个Dialog,加入N个按钮.我的Dialog叫Wav3是测试用的.所以懒得弄名字了,下面也有一个些名字写的不怎么样.

  全局的HWND g_hWndMCIWnd;    //因为懒得传来传去就全局好了

voidCWav3Dlg::OnButtonInit() 

{

  MCIWndClose(g_hWndMCIWnd);   //这个是为了打开一个声音的之前关闭以前的声音,应该先加一个判断好了.

g_hWndMCIWnd =

MCIWndCreate(this->m_hWnd,::AfxGetApp()->m_hInstance,WS_CAPTION,NULL);   

//创建句柄要说的是最后一个参数,如果是NULL,就新建一个,如果是一个文件的路径,就打开它.但是都要使用下面的MCIWndNew来开内存

MCIWndNew(g_hWndMCIWnd,"waveaudio");    

}

//初始化完了之后马上就可以录音了,下面就是录音函数

voidCWav3Dlg::OnButtonRec() 

{

  if(MCIWndCanRecord(g_hWndMCIWnd))   //这里是判断是否可以录音
  {

  MCIWndRecord(g_hWndMCIWnd);   //录音就这个函数,很简单

}
  else
  {
           AfxMessageBox("error#01");    //这个错误报告很垃圾的,不建议用,不过测试用还可以.
  }
  }

录音开始了,接下来就是停止,不停止还了得~!
  voidCWav3Dlg::OnButtonRecStop()         //这个停止函数不是只可以用在录音的,播放录音时也可以使用它来停止.

{
           MCIWndStop(g_hWndMCIWnd);    //别怀疑,就这么简单
  }

录完声音了,播放试试,这个播放也可以播放从硬盘打开的声音文件.

voidCWav3Dlg::OnButtonPlay() 
  {
           if(MCIWndCanPlay(g_hWndMCIWnd))   //这里判断有没有可以播放的东西
           {

                        MCIWndSeek(g_hWndMCIWnd,m_Int);    //说一下这里吧,这里是确定从哪里开始播放.没有也可以就是从头开始播放.里面的m_Int是用来传入播放开始点的,比如从滑动条上接收一个数字,传到这里,就从这里开始播放了.但这个方法是笨方法!

                        MCIWndPlay(g_hWndMCIWnd);
           }
           else
           AfxMessageBox("errorno wave");
  }

 

最后说说保存吧.

voidCWav3Dlg::OnButtonSave() 
  {
           CString m_Path;
           CFileDialogwav(FALSE,NULL,NULL,OFN_ALLOWMULTISELECT,"wav File (*.wav)|*.wav");
           if(wav.DoModal() ==IDOK)
           {
                     m_Path =wav.GetPathName();
           }
           else
                     return;
           if(MCIWndCanSave(g_hWndMCIWnd))
               {

MCIWndSave(g_hWndMCIWnd, "a");    //这里有点问题要说说了,MSDN里面写,这个MCIWndSave可以直接保存文件,第二个参数传入一个-1就会自动打开保存框给我们选择,但是我试了N久都没搞定,(也请高手看看,谁搞定了mail给我一份)它不打开保存框给我,但是返回一个成功值!靠~!还有直接保存为文件,文件名只要大于一位就是乱码,所以我在这里绕了一个圈,先保存成一个a,拷贝改名为要保存的文件名,最后在结束里面删除掉这个a.
CopyFile("a",m_Path,FALSE);

}

else
           AfxMessageBox("errorCan`t save");
  }

  OK,已经完成了!打开就不用说了,直接传一个文件路径给初始化的最后一个参数就行了.
  还有就是最后在善后的时候不要忘了执行一个MCIWndClose(g_hWndMCIWnd).

  最后提前祝大家圣诞快乐,其实还早着呢~

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值