我有一个Visual C ++ / CLI应用程序,它使用蜂鸣声来表示好的和坏的结果(当用户看不到屏幕时使用)。
目前我使用低音嘟嘟声来获得糟糕的结果和高音嘟嘟声以获得良好效果:
if( goodResult == true )
{
Beep(1000, 40);
}
else
{
Beep(2000, 20);
}
这在我的Vista笔记本电脑上运行正常,但我在其他笔记本电脑上尝试过,有些人似乎在较短时间内播放声音(听起来更像是咔嗒声而不是哔哔声)或声音根本不播放。 / p>
所以我在这里有两个问题:
答案 0 :(得分:3)
Beep功能传统上使用PC扬声器,我想它现在或多或少已经过时了。我猜这个功能是由笔记本电脑的BIOS处理的,因此取决于硬件。我建议您使用PC声卡来播放声音。
答案 1 :(得分:1)
根据Krumelur的回答,我得到了一个相当简洁的解决方案,它将.wav嵌入到可执行文件中。它使用SoundPlayer
代替PlaySound
函数。
对于Visual C ++ / CLI项目,添加嵌入式资源似乎与其他语言略有不同.net支持:
Properties
。Configuration Properties -> Linker -> Input
。$(ProjectDir)\Audio\PingSend.wav
)。要回放其中一个.wav,只需致电:
System::IO::Stream^ s = Assembly::GetExecutingAssembly()->GetManifestResourceStream("PingSend.wav");
System::Media::SoundPlayer^ pingPlayer = gcnew System::Media::SoundPlayer(s);
pingPlayer->Play();
..应该在一个新线程中播放声音。
答案 2 :(得分:0)
也许语音合成可能是合适的,不确定,我假设您的用户是盲人。
http://msdn.microsoft.com/en-us/library/system.speech.synthesis.speechsynthesizer.aspx
答案 3 :(得分:0)
答案 4 :(得分:0)
Windows MessageBeep功能将播放默认错误,确定或使用正确的参数提醒系统声音。因此,播放的实际声音和音量在用户的控制之下,但应该被识别为错误或OK。