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

海景房鬼城

海景房鬼城

2016-02-19 14:26

想要天天向上,就要懂得享受学习。图老师为大家推荐VC实现录音,放音,保存,打开功能,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

  前一段时间写一个录音功能的DLL,找了N久,发现N多例子都非常麻烦!现在功能DLL做完了,总结一下贴出来大家看看.

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

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  先是初始化函数

   void CWav3Dlg::OnButtonInit()
  {

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

  g_hWndMCIWnd = MCIWndCreate(this-m_hWnd,::AfxGetApp()-m_hInstance,WS_CAPTION,NULL);    //创建句柄要说的是最后一个参数,如果是NULL,就新建一个,如果是一个文件的路径,就打开它.但是都要使用下面的MCIWndNew来开内存

   MCIWndNew(g_hWndMCIWnd,"waveaudio");   
  }

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

   void CWav3Dlg::OnButtonRec()
  {
  if(MCIWndCanRecord(g_hWndMCIWnd))    //这里是判断是否可以录音
  {
  MCIWndRecord(g_hWndMCIWnd);    //录音就这个函数,很简单
  }
  else
  {
  AfxMessageBox("error #01");    //这个错误报告很垃圾的,不建议用,不过测试用还可以.
  }
  }

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

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

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

   MCIWndPlay(g_hWndMCIWnd);
  }
  else
  AfxMessageBox("error no wave");
  }

  最后说说保存吧.

   void CWav3Dlg::OnButtonSave()
  {
  CString m_Path;
  CFileDialog wav(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("error Can`t save");
  }

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

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

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
VC实现录音,放音,保存,打开功能

天籁K歌怎么保存录音

手机软件 应用软件
天籁K歌怎么保存录音

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

PowerPoint的录音功能实战

办公软件
PowerPoint的录音功能实战

电脑录音功能如何使用

电脑网络
电脑录音功能如何使用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Vc6中实现CComboBox的自动完成功能

编程语言 网络编程
Vc6中实现CComboBox的自动完成功能

VC界面的实现

C语言教程 C语言函数
VC界面的实现

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

电脑提示找不到移动硬盘是怎么回事

电脑提示找不到移动硬盘是怎么回事

使用SkinMagic Toolkit美化界面

使用SkinMagic Toolkit美化界面
下拉加载更多内容 ↓