2016-12-03 74 views
-2

嗶聲()函數實際上是否會在發出嗶聲的持續時間內凍結控制檯。當我們將Sleep()函數用於Sleep(1000)時,我們停止執行1秒。我想知道如果蜂鳴也確實是windows.h - 嘟嘟聲()

蜂鳴(1000,500) - 一秒鐘凍結控制檯?

謝謝

+2

您可以編譯並運行一個使用該函數的示例程序,並查看「Beep」是否爲您自己完成。 – ForceBru

+0

「嗶聲(1000,500) - 凍結控制檯一秒鐘?」 500→500ms-> 1/2秒。這對你有好處嗎? – user4581301

+0

是即時運行g每秒20幀,即20 x 50毫秒。所以一聲嘟嘟聲真的會殺死那個想法。但它不是關鍵項目。只是大學的作業和即時通訊 – Daniel

回答

1

According to Microsoft

生成的揚聲器簡單的音調。該功能是同步的;它執行可警告等待不會將控制權返回給其調用方,直到聲音結束。

通過向線程的消息隊列發送消息可以中斷可警告的等待。這通常需要IO完成或一些故意的操作,但它可能會提前返回並且不能計入時間。

要改變嘟嘟聲的長度,請相應地設置參數dwDuration

如果您的疑慮是無響應的控制檯,請使用另一個線程發送嘟嘟聲。 std::async may be helpful here。例如:

auto asyncbeep = std::async(std::launch::async, []{ Beep(1000,500); }); 
+0

我去了你的鏈接並運行他們在Visual Studio中提供的那段代碼 給出錯誤 - 任何想法 #錯誤在使用/ clr或/ clr:pure編譯時​​不受支持。 – Daniel

+0

這聽起來像你已經做了一個託管的C++項目。您應該在創建項目時選擇「Win32控制檯應用程序」。 –

+0

嗯...我如何檢查。 Project-> Properties-> says - > target platform windows – Daniel

0

This website已經有答案了。

該功能是同步的;它會執行可警告的等待,並且不會將控制權返回給主叫方,直到聲音結束。

所以它暫停,就像Sleep()