码迷,mamicode.com
首页 > 其他好文 > 详细

怎么插入背景音乐

时间:2020-07-26 15:24:19      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:导入   ram   class   指示   怎么   高版本   一点   修改   适合   

怎么加入WAV格式背景音乐

1.函数:

BOOL WINAPI PlaySound(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound); wav后缀的音乐,其他类型转换来的,不好使。

2.头文件:

#include <MMsystem.h>

#pragma comment(lib,"winmm.lib")

#include <Windows.h>

3.返回值:

true成功

false失败

4.参数

参数1	 (1)NULL  停止所有声音的播放
    	  (2)播放文件的绝对路径   参数3必须有SND_FILENAME
    	  (3)音乐文件资源的ID	  参数3必须有SND_RESOURCE
参数2	 (1)NULL
   	 (2)当前实例句柄:AfxGetlnstanceHandle()参数3是SND_RESOURSE
参数3		SND_FILENAME|SND_ASYNC
    	        SND_RESOURCE|SND_ASYNC

5.示例

#include <stdio.h>

#include <Windows.h>
#include <MMsystem.h>
#pragma comment(lib,"winmm.lib")

//插入音乐
void MyPlaySound()
{
	PlaySound(L"H:\\jum.wav",NULL,SND_FILENAME|SND_ASYNC);
    //PlaySound(TEXT("H:\\Jum.wav"), NULL, SND_FILENAME | 		//SND_ASYNC);用这个语句也可以
}
int main(void)
{
	//插入背景音乐
	MyPlaySound();
	system("pause");
	return 0;
}

在这里一点要提需要在代码 PlaySound(L"H:\\jum.wav",NULL,SND_FILENAME|SND_ASYNC);

写上L才可以成功运行。当然还有一种方式点击属性,再点击字符集,将其修改为使用多字符集,也可以。但是笔者并没有在vs2019中找到这种方式。

PlaySound(TEXT("H:\\Jum.wav"), NULL, SND_FILENAME | SND_ASYNC);

这种方式EXT()函数处理宽字符问题,SND_FILENAME标识采用文件名播放,SND_ASYNC标识异步播放,即PlaySound函数开始播放后便返回执行代码而不是等到播放完了再执行(此种方式对应SND_SYNC) 。

6.示例

#include <stdio.h>

#include "resource3.h"//这里要注意,这个头文件是看你添加资源的源代码里怎么写的,你就怎么写
#include <Windows.h>
#include <MMsystem.h>
#pragma comment(lib,"winmm.lib")

//插入音乐
void MyPlaySound()
{
	PlaySound((IDR_WAVE1), GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC | SND_LOOP);
	//PlaySound(MAKEINTRESOURCE(IDR_WAVE1), GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC | SND_LOOP);

	//上面两种方式都可以  IDR_WAVE1 是导入资源的ID   
	//下面针对第三个参数做一下解释
	//SND_RESOURCE 表示使用的资源文件(如果是文本文件 exe要带上一个音乐文件才能实现音乐播放)
	//SND_ASYNC  异步播放 
	//SND_LOOP  循环播放  必须要用到SND_ASYNC
	while (1);//防止直接退出程序
}
int main(void)
{
	//插入背景音乐
	MyPlaySound();
	system("pause");
	return 0;
}

这里需要在"资源文件"添加“资源”在点击“导入”你所需要的音乐文件。

7.示例

#include<Windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
 
int main()
{
    mciSendString(L"open ./bgm.mp3 alias bgm",0,0,0);//打开音乐
    mciSendString(L"open bgm repeat",0,0,0);//播放音乐
    
    /*
        1. 打开音乐 open后面的./bgm.mp3 是音乐文件的相对路径,使用绝对路径也可以
        2. 打开音乐中 alias bgm 是给音乐取个别名  下面就可以直接open bgm了,别名可以自取
        3. 播放音乐中 repeat表示重复播放,如果只想播放一次,可以去掉repeat
        4. mciSendString这个函数可以播放mp3 wav格式的音乐,如果代码无误但是没法播放音乐,尝试换一首.(尽量避免用网易云下载的音乐,可能无法播放,原因不明)
    */
	while (1);//防止直接退出程序
	return 0;
}

下面是MSDN的官方文档

另请参见要求Microsoft Windows CE 5.0的Platform Builder

播放声音
将有关此主题的反馈发送给作者
也可以看看
波形音频功能| sndPlaySound

要求
操作系统版本:Windows CE 2.0和更高版本。
标题:Mmsystem.h。
链接库:Coredll.lib。
此功能播放由文件名,资源或系统事件指定的声音。

布尔WINAPI PlaySound(
LPCSTR pszSound,
HMODULE hmod,
DWORD fdw声音
);
参量
psz声音
指向以空值结尾的字符串的指针,该字符串指定要播放的声音。如果此参数为NULL,则停止任何当前播放的波形声音。要停止非波形声音,请在fdwSound参数中指定SND_PURGE。
fdwSound中的三个标志(SND_ALIAS,SND_FILENAME和SND_RESOURCE)确定名称是否被解释为系统事件,文件名或资源标识符的别名。如果未指定这些标志,则PlaySound会在注册表或WIN.INI文件中搜索与指定声音名称的关联。如果找到关联,则播放声音事件。如果在注册表中未找到关联,则将该名称解释为文件名。

hmod
处理到包含要加载资源的可执行文件。除非在fdwSound中指定了SND_RESOURCE,否则此参数必须为NULL。
fdwSound
用于播放声音的标志。下表显示了可能的值。值说明
SND_ALIAS pszSound参数是注册表或WIN.INI文件中的系统事件别名。请勿与SND_FILENAME或SND_RESOURCE一起使用。
SND_ASYNC声音异步播放,开始播放声音后立即返回PlaySound。要终止异步播放的波形声音,请在pszSound设置为NULL的情况下调用PlaySound。
SND_FILENAME pszSound参数是文件名。
SND_LOOP声音重复播放,直到在pszSound参数设置为NULL的情况下再次调用PlaySound为止。您还必须指定SND_ASYNC标志以指示异步声音事件。
SND_MEMORY声音事件的文件已加载到RAM中。 pszSound指定的参数必须指向内存中的声音图像。
SND_NODEFAULT不使用默认声音事件。如果找不到声音,则PlaySound会静默返回而不播放默认声音。
SND_NOSTOP指定的声音事件将产生另一个正在播放的声音事件。如果由于产生该声音所需的资源正忙于播放其他声音而无法播放声音,则该函数将立即返回FALSE,而不会播放请求的声音。
如果未指定此标志,则PlaySound尝试停止当前正在播放的声音,以便可以使用该设备播放新的声音。

SND_NOWAIT如果驾驶员忙,请立即返回而不播放声音。
SND_RESOURCE pszSound参数是资源标识符。 hmod必须标识包含资源的实例。创建资源时,必须将其标识为WAVE类型,请参阅将PlaySound与资源标识符一起使用。
SND_SYNC声音事件的同步播放。声音事件完成后,PlaySound返回。

返回值
TRUE表示成功。 FALSE表示失败。

备注
Windows CE不支持fdwSound参数的SND_ALIAS_ID和SND_PURGE标志。 pszSound指定的声音必须适合可用的物理内存,并且可以由已安装的波形音频设备驱动程序播放。 PlaySound根据目标设备的OEM指定的搜索顺序在文件系统目录中搜索声音。如果找不到指定的声音,PlaySound将使用默认的系统事件声音条目。如果该函数找不到系统默认条目或默认声音,则它不会发出声音并返回FALSE。

有关如何使用PlaySound功能的示例,请参见使用PlaySound功能。

要求
操作系统版本:Windows CE 2.0和更高版本。
标题:Mmsystem.h。
链接库:Coredll.lib。

也可以看看
波形音频功能| sndPlaySound

怎么插入背景音乐

标签:导入   ram   class   指示   怎么   高版本   一点   修改   适合   

原文地址:https://www.cnblogs.com/zhouyt/p/Zytong1.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!