簡體   English   中英

您將如何使用變量代替 mciSendString 中的音量? C++

[英]How would you use a variable in place of volume in mciSendString? C++

所以我正在使用 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 時一樣。

我該怎么做才能解決這個問題?

首先,您不能將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

我在 mcisendstring 上遇到了同樣的問題,因為你使用的是 C++,我建議你像以前一樣解決這個問題

創建一個名為 mcicommand 的函數,如下所示:

    #include <string>
    string mcicommand(string volume){
    
        string command = "setaudio song volume to ";
        
        int found = command.find_last_of(" ");
        command = command.substr(0, found) + " " + volume;
        
        return command;
}

現在每當你想用 mcisendstring 調用這個函數時,就這樣做

string volume;
cin >> volume;
vol_command = mcicommand(volume)
mcisendstring(vol_command.c_str , NULL, 0, NULL); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM