编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 加载应用程序Wave资源
  · 加载应用程序Wave资源

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  110 篇
技术分:  1160 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 14:37:59
          楼主
加载应用程序Wave资源
如果程序中需要播放一些较小的wav文件,可以将wav文件加载为应用程序的资源,这样,磁盘中就不需要保留wav文件了,程序中可以直接使用wav资源文件就可以了。当然,这么做会增加应用程序的大小,但是,对于较小的wav文件,采用这种方式还是合理的。为了播放wav资源,需要使用系统提供的PlaySound函数,该函数不仅可以播放wav资源,还可以播放wav文件。
语法格式如下:
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
参数说明:
 pszSound:表示播放声音的字符串,可以是表示资源的字符串,也可以是表示wav文件的字符串,其最大长度为256个字符,包括终止符。
 hmod:表示包含wav资源的可执行文件句柄。
 fdwSound:表示声音的播放标记,可选值如表1所示。
表1                               声音播放标记

描述

SND_APPLICATION

表示播放应用程序关联的声音。读取注册表HKCUAppEventsSchemesApps pszSoundPlaySound第一个参数)下的.current值表示的文件

SND_ALIAS

pszSound表示的是系统事件别名,在注册表中或win.ini文件中

SND_ALIAS_ID

pszSound指定了预定义的声音标识符

SND_ASYNC

用异步方式播放声音,PlaySound函数在开始播放后立即返回

SND_FILENAME

pszSound表示文件名

SND_LOOP

声音被循环播放,知道再次调用PlaySound函数

SND_MEMORY

播放载入到内存中的声音,此时pszSound是指向声音数据的指针

SND_NODEFAULT

不播放默认声音,不指定该标记,PlaySound在没找到声音时会播放缺省声音

SND_NOSTOP

在不停止原来的播放声音基础上,再次播放声音

SND_NOWAIT

如果驱动程序正忙则函数就不播放声音并立即返回

SND_PURGE

停止所有与调用任务有关的声音。如果参数pszSoundNULL,则停止所有的声音,否则只停止pszSound指定的声音。

SND_RESOURCE

pszSound表示一个声音资源

SND_SYNC

同步播放声音,在播放完后PlaySound函数才返回


下面通过一个示例演示如何向应用程序中加载声音及播放加载的声音。
例如,向应用程序中加载声音并播放加载的声音
(1)创建一个单文档/视图结构的应用程序,视图基类为CformView,工程名称为“LoadRes”。
(2)在工作区的资源视图标签页(ResourceView)中鼠标右键单击根节点,在弹出的快捷菜单中选择“Import”菜单项,导入一个“wav”文件。
(3)引用Mmsystem.h头文件和Winmm.lib库文件。
#include "Mmsystem.h"          //应用头文件
#pragma comment (lib,"Winmm.lib")        //引用库文件
(4)在视图窗口中添加一个按钮,处理按钮的单击事件。
void CLoadResView::OnDemoWave()
{
 PlaySound(MAKEINTRESOURCE(IDR_BUTTONWAVE),AfxGetResourceHandle(),
       SND_ASYNC|SND_RESOURCE|SND_NODEFAULT); //播放声音资源
}
(5)运行程序,单击按钮,将播放声音资源,如图1所示。
 
图1  播放声音资源
 提示:我们在设计应用程序时,如果资源文件比较大,不建议将资源文件加载到可执行文件中,这样会导致应用程序变得非常庞大。
本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页