簡體   English   中英

使PlaySound無阻塞

[英]Make PlaySound non-blocking

我一直在測試聲音,我注意到PlaySound正在阻塞,即它等待聲音播放完畢才會返回。

#include <iostream>
#include <Windows.h>
#include <mmsystem.h>

int main()
{
    PlaySound("E:/Downloads/eb_sfx_archive/brainshock.wav", 0, SND_FILENAME);
    std::cout << "this sound is cool";
    Sleep (500);
    std::cout << "\nmeh... not really";
    return 0;
}

此代碼播放聲音,但在聲音播放完畢之前等待輸出“此聲音很酷”。 我怎么能不這樣做呢?

異步播放聲音:

PlaySound(L"E:\\Downloads\\eb_sfx_archive\\brainshock.wav", NULL, SND_ASYNC);

MSDN文檔:

聲音以異步方式播放, PlaySound在開始播放后立即返回。 要終止異步播放的波形聲音,請在pszSound設置為NULL調用PlaySound

使用標志SND_ASYNC異步播放聲音。

即:

PlaySound("E:/Downloads/eb_sfx_archive/brainshock.wav", 0, SND_FILENAME | SND_ASYNC);

SND_ASYNC標志使PlaySound立即返回,而不等待聲音完成播放。

此外,如果您需要停止播放聲音(循環或異步)而不播放其他聲音,請使用以下語句:

PlaySound(NULL, NULL, 0);

這里有更多信息和示例(使用PlaySound循環聲音)和這里 (PlaySound功能)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM