0

だから私は 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 を使用する代わりに、任意の整数値を含む変数を使用できます。ただし、実行するとエラーは発生せず、オーディオは通常のように 500 ではなく 1000 で再生され続けます。

これを修正するにはどうすればよいですか?

4

1 に答える 1

0

TEXT()まず、変数でマクロを使用することはできません。コードのコンパイルに使用されるオプション (マルチバイト ワイド文字列または UTF8) に応じて、リテラルの前に"Hello"および を配置するなどの文字配列リテラルでのみ使用することを意図しています。L

後者のオプションでは、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::wstring他のオプションについては、それに応じて を使用する必要がありますstd::wostringstream

于 2015-07-05T07:54:57.113 に答える