26.音频

  • 学习人数 15K+
  • 适合有C语言基础人群学习
avatar
林耿亮

你好编程主讲老师

一个正式的游戏仅有画面可不行,在游戏进行中肯定会出现背景音乐和各式各样的游戏音效。这一节中我们来讨论如何播放音频文件。

播放音频

为了能够播放音频,我们来认识一个函数mciSendString

MCIERROR mciSendString(
   LPCTSTR lpszCommand,
   LPTSTR  lpszReturnString,
   UINT    cchReturn,
   HANDLE  hwndCallback
);

它的第一个参数类型为LPCTSTR,即const char *。参数意义为需要传入的MCI命令字符串的首元素指针。大部分情况下,我们仅需要关注第一个参数就行了。后面几个参数若为指针类型,可以填为NULL,若为数值类型,可以填为0

我们将以下面这段代码为例,介绍怎样用MCI命令操作音频文件。在开始前,先将音频文件起床歌.mp3放置到当前目录下。

// 打开音乐
mciSendString("open 起床歌.mp3", NULL, 0, NULL);
printf("打开音乐");
getchar();

// 开始播放
mciSendString("play 起床歌.mp3", NULL, 0, NULL);
printf("开始播放");
getchar();

// 暂停播放
mciSendString("pause 起床歌.mp3", NULL, 0, NULL);
printf("暂停播放");
getchar();

// 继续播放
mciSendString("resume 起床歌.mp3", NULL, 0, NULL);
printf("继续播放");
getchar();

// 停止播放
mciSendString("stop 起床歌.mp3", NULL, 0, NULL);
printf("停止播放");
getchar();

// 关闭音乐
mciSendString("close 起床歌.mp3", NULL, 0, NULL);
printf("关闭音乐");
getchar();

构建以上代码,发现开发环境报LNK2019错误。

link2019

这是因为,函数mciSendString在库winmm.lib中。而默认情况下,链接器不会输入这个库文件。为了解决这个问题,我们需要将库winmm.lib,添加到工程配置的链接器输入当中。

在工程上点右键,选择属性。找到配置属性--链接器--输入--附加依赖项

链接器输入

winmm.lib添加到附加依赖项当中,即可成功通过构建。

添加到附加依赖项