| | 网站首页 | 文章中心 | 下载中心 | 编程世界论坛 | 图片中心 | 留言板 | 发布源码 | | |
![]() |
![]() |
| 您现在的位置: 编程世界 >> 文章中心 >> VC文章 >> Win32程序 >> 文章正文 |
|
|||||
| VC播放资源文件中的声音 | |||||
作者:佚名 文章来源:本站原创 点击数: 更新时间:2008-4-4 ![]() |
|||||
|
我们在编程时总会遇到这种情况。希望自己的程序有声音,而又不希望拖带很多的音频文件,那我们可以把这些声音文件保存到资源中,这样就可以一个exe文件轻装上阵了,针对这个问题,本实例介绍了如何在Visual C++开发播放保存在资源文件中的声音。 一、理论支持 这里举例实现启动时播放一段声音,为了保证程序的完整性,首先用文本编辑器(如记事本)打开应用程序的资源文件(.rc文件),在最后加入自己的声音资源,如下IDW WAVE "c:\\1.wav",并保存资源文件。当然,开发人员也可以通过Visual C++的IDE环境向程序添加声音资源,这不是本实例讲述的重点,所以不再赘述。 一般情况下,为了实现启动画面和声音同时播放的效果,可以在应用程序中要播放声音的地方启动另一线程,用来播放声音,虽然本实例没有启动画面,但是还是在一个线程中来实现声音资源文件的播放。启动线程的代码如下: AfxBeginThread((AFX_THREADPROC)sound,NULL,THREAD_PRIORITY_NORMAL); 上述函数中sound为一个回调函数,该函数首先用AfxGetInstanceHandle()函数获得应用程序实例的句柄,然后用函数FindResource()函数找到声音资源,该函数原型如下: HRSRC FindResource( 函数中参数hModule为模块句柄,lpName为资源名,lpType为资源类型名。 找到声音资源后,用LoadResource()函数加装载资源,该函数原型如下: HGLOBAL LoadResource( 函数中参数hModule为模块句柄,hResInfo为资源句炳。 最后调用LockResource()函数锁定资源内存块,并返回所标定内存块的虚拟内存地址。如果该资源被成功锁定的话,则返回值指向该资源开始处的第一个字节。注意:若上述四步中的任何一步发生问题,则返回并释放相应的内存。接下去要做的事情就是使用sndPlaySound()函数来播放声音资源文件了。 二、编程步骤(开始做实例) 1、 启动Visual C++6.0,生成一个单文档视图结构的应用程序,将该程序命名为"PlaySound"; 2、 使用Class Wizard在应用程序的视图类中添加鼠标"左键按下"的消息响应函数,同时为程序添加声音文件资源IDW; 3、 添加代码,编译运行程序; 三、程序代码 /////////////////////////////////////////////////////////// 四、总结 本实例探讨了播放声音资源文件的办法,对于如何播放声音文件,只要调用sndPlaySound()函数就可以了,实际几行代码就实现了,主要的工作还是在如何实现资源文件的装载上,其实在本书的一些实例中都涉及到了资源文件的装载,虽然资源类型不同,但是实现方法还是大同小异的。至于如何自由的操作声音文件,在《基于Visual C++6.0的声音文件操作》中作了详细说明,有条件的朋友可以看看该书。 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| VC6做简易自动升级程序 防止VC的edit控件密码被非法 一个自写的显示GIF和JPG的类 VC实现删除文件到回收站 VC多线程之线程间的通信 VC另关闭按钮(X按钮)变灰失效 vc全局钩子实现程序监控 创建只能建一个对象的类 读写注册表API,适用于VC也适 VC6冲破friend和cstring类的 |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | | ||||||||||
![]() |
|
|||||||||