【发布时间】:2019-02-22 11:29:29
【问题描述】:
我在使用 Dev C++ 用 C 语言进行 Beep 函数编程时遇到问题。
我需要持续 25 毫秒的哔声,我正在使用的代码行是
Beep (1000, 25)
这在 Windows 8/8.1 上运行良好,我得到了我想要的。 但是当我在 Windows 10 上运行相同的程序时,它没有发出哔哔声!我试图增加持续时间,然后我注意到如果它是 100 毫秒或更长,它会发出哔哔声......
有什么想法吗?
这可能是与硬件相关的原因造成的吗?
【问题讨论】:
-
“这可能是由硬件相关的东西引起的吗?” 可能是这样。根据docs.microsoft.com/en-us/windows/desktop/api/utilapiset/…,“Beep 函数是专门为在该硬件上发出哔声而编写的。”和“[...] 结果是 Beep 不能在所有没有芯片的计算机上工作。这没关系,因为大多数开发人员已经开始调用 MessageBeep 函数”
-
然而,从 Windows 7 开始,它的行为是使用声卡模拟的。快速搜索显示这个 100 毫秒的问题很常见,这可能是对如何实现此 模拟 的限制。如果你需要精确的时间,那么你应该避免使用
Beep(),如果你不需要,那么你应该使用MessageBeep()或PlaySound()。如果您需要对生成的波形进行精细控制,那么您应该使用waveOut*()系列函数。 -
哦,好的!谢谢!我需要精确的时间并控制频率,所以我想我会按照你的建议使用 waveOut 函数系列!谢谢!!
标签: c winapi windows-10 beep