一个正式的游戏仅有画面可不行,在游戏进行中肯定会出现背景音乐和各式各样的游戏音效。这一节中我们来讨论如何播放音频文件。
播放音频
为了能够播放音频,我们来认识一个函数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
错误。
这是因为,函数mciSendString
在库winmm.lib
中。而默认情况下,链接器不会输入这个库文件。为了解决这个问题,我们需要将库winmm.lib
,添加到工程配置的链接器输入当中。
在工程上点右键,选择属性。找到配置属性--链接器--输入--附加依赖项。
将winmm.lib
添加到附加依赖项当中,即可成功通过构建。