• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
VC实现录音,放音,保存,打开
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
VC实现录音,放音,保存,打开
软件发布 VC实现录音,放音,保存,打开
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> VC教程 >> VC实现录音,放音,保存,打开

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

添加时间: 2006-2-11 0:29:40  作者: VC教程  阅读次数:329   来源: http://www.d9soft.com

        前一段时间写一个录音功能的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)) //这里判断有没有可以播放的东西
  {
  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+Matlab实现卫星照片三维显示

相关文章:

  • 飞速在线看视频 傲盾加速帮你实现速度感受
  • 用端口碰撞技术实现服务器远程管理
  • 病毒猖獗,怎么打开电脑文件会较安全?
  • servlet实现oracle中读出文件并显示
  • 在Oracle中实现数据库的复制

相关软件:

  • 免费录音机 V2.5 Build 0926
  • 英语口语8000句电子书及录音 完美版[英语学习最佳工具]
  • 吉辰录音机 V2.6
  • 方塘音控(系统音量及录音源控制) 1.0a
  • 网页图片保存能手 7.0
  • 录音软件 V2.5

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • VC++之Button控件
  • VC++之Static Box控件
  • VC++之Edit Box控件
  • VC++之Static Box控件
  • VC++之Edit Box控件
  • VC++之Scroll Bar
  • VC++之Scroll Bar
  • VC++之List Box/Check List Box控...
  • VC++ Combo Box/Combo Box Ex控件
  • VC++ List Ctrl控件

VC教程阅读排行

  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • VC++之Button控件
  • VC++之Tab Ctrl控件
  • VC++之Edit Box控件
  • VC++之Edit Box控件
  • VC遍历整个目录树查找文件
  • VC++之Scroll Bar
  • 深入编程:控制面板知多少?

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有