我如何在我的C ++ Windows游戏中播放声音?

时间:2016-04-05 19:38:04

标签: c++ windows codeblocks playsound

Windows 7 Ultimate 64Bit,我正在使用CodeBlocks 16.01。我正在研究我的OpenGL大学项目,当玩家使用空格键拍摄时,我试图添加枪声效果。键。

声音仅在我创建控制台项目或空项目时才有效,声音播放得很好,我知道图书馆" winmm.lib"我必须链接,它作为CONSOLE PROJECT工作得很好,这里是代码。

#include <iostream>
#include <windows.h>
#include <mmsystem.h>

using namespace std;

int main()
{
    PlaySound("shotgun.wav",NULL,SND_SYNC);
    return 0;
}

当我现在在我的Glut项目中使用此代码时,问题就开始了,所发生的事情不是玩#34; shotgun.wav&#34;它播放一个名为&#34;默认哔声&#34;,当拍摄按钮&#34;空格键&#34;被压了。游戏冻结了几秒钟,直到声音完成,但是我通过用这个替换上面的线来解决这个问题:

PlaySound(TEXT("shotgun.wav"), NULL, SND_FILENAME | SND_ASYNC);

它不再冻结,但仍然,它继续播放Windows系统声音而不是shotgun.wav。 .wav文件在项目中,我很确定它在正确的位置。这是我的Glut项目中的拍摄代码示例(我只复制了相关的代码段):

void Keys(unsigned char key, int x, int y) {
key = tolower(key); //Just in case CAPS LOCK is ON.

    if(key==27)
        exit(0); //Escape key, Exit the game

    switch(key){ 
    case ' ':  //SPACE BAR

            /* some code here */

            PlaySound(TEXT("shotgun.wav"), NULL, SND_FILENAME | SND_ASYNC);
        break; //.....Code continues to the next case....

为了强制使用枪声音效果,我必须转到Windows声音设置和&#34;更改系统声音&#34;,大声笑,我实际上必须更换&#34;默认蜂鸣声&#34;用我的&#34; Shotgun.wav&#34;,然后我回到游戏并编译,并且wala!它工作正常。但是当然这不是我想要的,因为很明显这只会在我的电脑上运行而且我们不希望这样。

1 个答案:

答案 0 :(得分:1)

您需要指定完整的文件路径。中间使用双斜杠\\。例如:

sndPlaySound("D:\\New folder(2)\\poiuy\\sound.wav",SND_ASYNC|SND_LOOP);