我有一个俄罗斯方块游戏,我想向其中添加背景音乐。
我正在尝试使用PlaySound(TEXT("Tetris.wav"), NULL, SND_SYNC);,但是我没有听到音乐,而是得到了“Windows声音”。

它编译。我猜它不想用过剩。

这是我的main()

int main(int argc, char **argv)
{
    PlaySound(TEXT("Tetris.wav"), NULL, SND_SYNC);
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(600,600);
    glutInitWindowPosition(1000, 10);
    glutCreateWindow("Tetris");
    glClearColor(0, 0, 0, 1);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 150, 200, 0, -1.0, 1.0);
    glutDisplayFunc(display);
    timer(0);
    glutSpecialFunc(keyEvent);
    glutMainLoop();
}

我有#include <Windows.h>#include <MMSystem.h.>,在这里工作正常:
#include <iostream>
#include <Windows.h>
#include <MMSystem.h.>
using namespace std;

int main()
{

    PlaySound(TEXT("Tetris.wav"), NULL, SND_SYNC);
    cout << "Hello world!" << endl;
    return 0;
}

那是因为过剩吗?我能以某种方式解决吗?

最佳答案

首先,您最好使用绝对路径。

其次,如the official documentation所述,我将使用SND_FILENAME标志。

(我无法想象这与GLUT有任何关系。)

关于c++ - PlaySound不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49369381/

10-13 22:35