VC程序设计之VC实现录音,放音,保存,打开功能
小职 2017-11-30 来源 :网络 阅读 1156 评论 0

摘要:本篇VC程序设计教程将为大家讲解VC程序设计编程的知识点,看完这篇文章会让你对VC程序设计编程的知识点有更加清晰的理解和运用。

本篇VC程序设计教程将为大家讲解VC程序设计编程的知识点,看完这篇文章会让你对VC程序设计编程的知识点有更加清晰的理解和运用。

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

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

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

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

  先是初始化函数

  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))    //这里判断有没有可以播放的东西
  {

   

察看评论详细内容 我要发表评论

作者笔名

   

简短内容

   

发表时间

   

:

   

2


  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).


希望这篇VC程序设计文章可以帮助到你。总之,同学们,你想要的职坐标VC程序设计频道都能找到!

 

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程