VS中如何导入并且播放音乐

原文链接: https://blog.csdn.net/Sum7mer/article/details/79003631

用到的函数 PlaySound

所需头文件 

#include<windows.h>
 
#include<mmsystem.h>
 
#pragma comment(lib,"winmm.lib")

步骤

1.准备一个wav文件 放在一个比较方便找的位置 等下要导入

2.导入资源文件

到解决方案资源管理器中右键资源文件 添加一个资源

文件类型选择Accelerator 点导入

文件类型选择所有文件 然后点打开即可导入

如果导入的文件没有显示 就打开这个新的rc文件的代码 找到如下一行

IDR_WAVE1 是导入的文件ID  WAVE是文件格式 后面的是文件名

3.导入成功之后可以直接写代码播放

播放音乐的全部代码如下

#include"resource.h"//导入资源之后有一个resource.h头文件 记得加上
#include<Windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
 
int main()
{
	PlaySound(LPWSTR(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);//防止直接退出程序
	return 0;
}

备注  1) PlaySound不能播放mp3 可以播放导入的wav或者播放一个wav文件,如果想要播放mp3可以用mciSendString,但是mciSendString不能播放资源文件

2) 导入资源之后exe会变得更大,上面示例中的exe将近有43M,播放的wav有36M,而同样的Mp3文件将近10M

-----------------------------------------------------------------------------------------------------------------------------------------------------

如果遇到有未定义标识符的问题,如果是某个函数未定义,那么加上头文件

如果是里面的资源ID有问题,打开项目中的rc文件找到正确的资源ID,同时记得加上resource.h这个头文件(导入资源之后自动创建)

//如果只是播放外部音乐  可以参考如下代码  想要了解更多内容可以查一下mciSendString这个函数的用法
 
#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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43701019/article/details/100027495
今日推荐