如何在Windows上用C发出哔声?

Ash*_*uja 6 c windows audio

我正在尝试制作一个包含哔声的程序.我在32位Windows Vista上工作.我正在使用在GNU编译器上运行的Code :: Blocks IDE.我的示例代码是 -

#include <stdio.h>
#include <windows.h>
#include <dos.h>

int main(void)
{
    Beep(750, 300);
    printf("\n \n \t This is a dummy program for Beep.");
    getch();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在互联网上,我读到我们也可以在printf中使用\ a来发出哔哔声.我试过了,但它没有用.我检查了我的扬声器和声卡.一切都很完美,但我听不到哔哔声.即使我在示例代码中显示的方法也不起作用.

Dam*_*ick 8

C标准建议写入'\a'标准输出产生声音或可见警报信号,但如果重定向标准输出则不起作用.同样,一些较新的计算机缺少Windows Beep()和某些终端所依赖的PC蜂鸣器.要使Windows PC在桌面应用程序中播放警报声,您可以调用Windows特定的MessageBeep功能,该功能可以"异步"播放声音(在程序继续运行时在后台播放声音).用户可以在声音控制面板中配置与这四个值中的每一个相关联的声音.

#include <windows.h>

/* Include one of these in a function */
MessageBeep(MB_OK);              /* play Windows default beep */
MessageBeep(MB_ICONINFORMATION); /* play asterisk sound */
MessageBeep(MB_ICONQUESTION);    /* play question sound */
MessageBeep(MB_ICONWARNING);     /* play warning sound */
Run Code Online (Sandbox Code Playgroud)

MessageBeep()是定义的User32.dll,所以如果这给你链接错误,请确保你链接到相应的导入库.在MinGW GCC(Code :: Blocks中的编译器)中,添加-lUser32到传递给链接器的库列表.

  • 提示未来的读者:当我快速尝试这个时,我得到了链接错误,并且不得不在链接中添加`User32.dll`.大多数IDE生成的Windows项目可能包含它,但如果没有,找到一种方法为你的dev env添加它(我需要将`LIBS = + -lUser32`添加到我的测试项目的*qmake*.pro文件中,例如). (2认同)