你如何在mciSendString中使用变量代替音量? C ++

时间:2015-07-05 07:21:49

标签: c++ audio volume mcisendstring

所以我正在使用C ++制作基本的2D格斗游戏。对于声音/音频效果,我使用 mciSendString()

            mciSendString(TEXT("setaudio sounds\\character_select.mp3 volume to 500"), NULL, 0, NULL);

以上代码工作正常。它将声音的音量设置为500;但是,我不想硬编码音量值。我希望它逐渐变小,而不必一遍又一遍地复制和粘贴相同的行,只需要一个较小的整数值。

            mciSendString(TEXT("setaudio sounds\\character_select.mp3 volume to " + volume ), NULL, 0, NULL);

我想做这样的事情。而不是硬编码500我可以有一个任何整数值的变量。然而,当我运行它时,我没有错误,音频继续像1000通常那样播放,而不是500.

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

首先,您不能将TEXT()宏用于变量。它仅用于与"Hello"等字符数组文字一起使用,并在文字前放置L,具体取决于使用哪个选项(多字节宽字符串或UTF8)来编译代码。

对于后一个选项,您可以使用std::string变量来编写命令:

std::ostringstream oss;
int volume = 300;
oss << "setaudio sounds\\character_select.mp3 volume to " << volume;
std::string cmd = oss.str();

mciSendString(cmd.c_str(), NULL, 0, NULL);

对于其他选项,您需要相应地使用std::wstringstd::wostringstream