进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 程序开发 -> C/C++ -> 文章内容  
在应用程序中播放声音资源文件

作者:刘涛

  如果能够在启动应用程序过程中再相应地添加声音文件的播放效果,那一定是件更令人高兴的事情,针对这个问题,本实例介绍了如何在Visual C++开发的应用程序中播放声音资源文件。

  一、实现方法

  为了保证程序的完整性,首先用文本编辑器(如记事本)打开应用程序的资源文件(.rc文件),在最后加入自己的声音资源,如下IDW WAVE "c:\kav\sound\virus.wav",并保存资源文件。当然,开发人员也可以通过Visual C++的IDE环境向程序添加声音资源,这不是本实例讲述的重点,所以不再赘述。

  一般情况下,为了实现启动画面和声音同时播放的效果,可以在应用程序中要播放声音的地方启动另一线程,用来播放声音,虽然本实例没有启动画面,但是还是在一个线程中来实现声音资源文件的播放。启动线程的代码如下:

AfxBeginThread((AFX_THREADPROC)sound,NULL,THREAD_PRIORITY_NORMAL);

  上述函数中sound为一个回调函数,该函数首先用AfxGetInstanceHandle()函数获得应用程序实例的句柄,然后用函数FindResource()函数找到声音资源,该函数原型如下:

HRSRC FindResource(
 HMODULE hModule, // module handle
 LPCTSTR lpName, // resource name
 LPCTSTR lpType // resource type
)

  函数中参数hModule为模块句柄,lpName为资源名,lpType为资源类型名。

  找到声音资源后,用LoadResource()函数加装载资源,该函数原型如下:

HGLOBAL LoadResource(
 HMODULE hModule, // module handle
 HRSRC hResInfo // resource handle
);

  函数中参数hModule为模块句柄,hResInfo为资源句炳。

  最后调用LockResource()函数锁定资源内存块,并返回所标定内存块的虚拟内存地址。如果该资源被成功锁定的话,则返回值指向该资源开始处的第一个字节。注意:若上述四步中的任何一步发生问题,则返回并释放相应的内存。接下去要做的事情就是使用sndPlaySound()函数来播放声音资源文件了。

  二、编程步骤

  1、 启动Visual C++6.0,生成一个单文档视图结构的应用程序,将该程序命名为"PlaySound";

  2、 使用Class Wizard在应用程序的视图类中添加鼠标"左键按下"的消息响应函数,同时为程序添加声音文件资源IDW;

  3、 添加代码,编译运行程序;

  三、程序代码

///////////////////////////////////////////////////////////
void CPlaySoundView::OnLButtonDown(UINT nFlags, CPoint point)
{
 AfxBeginThread((AFX_THREADPROC)sound,NULL,THREAD_PRIORITY_NORMAL);
 CView::OnLButtonDown(nFlags, point);
}
UINT CPlaySoundView::sound(LPVOID pParam)
{
 HINSTANCE h=AfxGetInstanceHandle();
 HRSRC hr=FindResource(h,"IDW","WAVE");
 HGLOBAL hg=LoadResource(h,hr);
 LPSTR lp=(LPSTR)LockResource(hg);
 sndPlaySound(lp,SND_MEMORY|SND_SYNC);
 FreeResource(hg);
 return 0;
}

  四、小结

  本实例探讨了播放声音资源文件的办法,对于如何播放声音文件,只要调用sndPlaySound()函数就可以了,主要的工作还是在如何实现资源文件的装载上,其实在本书的一些实例中都涉及到了资源文件的装载,虽然资源类型不同,但是实现方法还是大同小异的。至于如何自由的操作声音文件,在《基于Visual C++6.0的声音文件操作》中作了详细探讨,读者朋友可以参阅该实例。
www.goodsgy.com

在百度中搜索:在应用程序中播放声音资源文件
在Google中搜索:在应用程序中播放声音资源文件
在Yahoo中搜索:在应用程序中播放声音资源文件

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· 在java中找到需要的资源文件路径
· [图文] 在应用程序中开关WINDOWS系统
· 在.NET中嵌入和使用资源文件
· 一个读取扩展名为xml的资源文件的方法
· Visio 2003 教程 查看和恢复禁用的加载项..
· java中找到资源文件的路径
· 在应用程序中集成 Windows 实时通信
 
· SOA与数据挖掘在税收系统的应用
· 微软架构师谈编程语言发展之二
· 微软架构师谈编程语言发展之一
· 浅谈C++/CLI中引用类型的栈对象
· [图文] 资源DLL与语言选择菜单的实现
· [图文] 用VSTS代码验证工具捕捉C/C++错误
· C/C++:如何在程序中加载JPG图片?
· 嵌入式系统中文输入法的设计
· 内存调试技巧:C 语言最大难点揭秘
· C程序实现汉字内码与GB码

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)