PlaySoundの同期再生と非同期再生

    PlaySound は Windows プラットフォームの独自の API 関数です. .wav 形式のオーディオ ファイルの再生のみをサポートします. 使用されるライブラリ ファイルは winmm.lib です. このライブラリ ファイルは Windows に付属のライブラリ ファイルです.宣言され、手動で追加する必要はありません。

  • 声明は次のとおりです。
#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")
  • 同期モードと非同期モードに分けられます。
  • 1) 同期方法
//1) MBCS编码
PlaySound("hello.wav", NULL, SND_SYNC | SND_FILENAME | SND_NOSTOP);

//2) Unicode编码
PlaySound(L"hello.wav", NULL, SND_SYNC | SND_FILENAME | SND_NOSTOP);

//3) 兼容MBCS编码与Unicode编码
PlaySound(TEXT("hello.wav"), NULL, SND_SYNC | SND_FILENAME | SND_NOSTOP);
  • 2) 非同期の方法
//1) MBCS编码
PlaySound("hello.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NOSTOP);

//2) Unicode编码
PlaySound(L"hello.wav", NULL, SND_ASYNC | SND_FILENAME | SND_NOSTOP);

//3) 兼容MBCS编码与Unicode编码
PlaySound(TEXT("hello.wav"), NULL, SND_ASYNC | SND_FILENAME | SND_NOSTOP);

    ここではコンソール アプリケーション DoPlay を例に説明します。使用する開発ツールはVisual Studio 2005 です。Visual
    Studio ツールバーの [ファイル] をクリックします --「新規」--「Visual C++ --」「Win32」 --「Win32 コンソール アプリケーション」番組名:DoPaly

1 同期再生同期

1.1 マルチバイト文字セット (MBCS) エンコーディングの使用

    //DoPlay.cpp

#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    PlaySound("hello.wav", NULL, SND_SYNC |SND_FILENAME | SND_NOSTOP);
    system("pause");
    return 0;
}

1.2 Unicode 文字セット エンコーディングを使用する

    //DoPlay.cpp

#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    PlaySound(L"hello.wav", NULL, SND_SYNC |SND_FILENAME | SND_NOSTOP);
    system("pause");
    return 0;
}

1.3 MBCS および Unicode との互換性

    //DoPlay.cpp

#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    PlaySound(TEXT("hello.wav"), NULL, SND_SYNC |SND_FILENAME | SND_NOSTOP);
    system("pause");
    return 0;
}

2 非同期再生 Async

2.1 マルチバイト文字セット (MBCS) エンコーディングの使用

    //DoPlay.cpp

#include "stdafx.h"
#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    PlaySound("hello.wav", NULL,SND_ASYNC |SND_FILENAME | SND_NOSTOP);
    system("pause");
    return 0;
}

2.2 Unicode 文字セット エンコーディングを使用する

    //DoPlay.cpp

#include "stdafx.h"
#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    PlaySound(L"hello.wav", NULL,SND_ASYNC |SND_FILENAME | SND_NOSTOP);
    system("pause");
    return 0;
}

2.3 MBCS および Unicode との互換性

    //DoPlay.cpp

#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    PlaySound(TEXT("hello.wav"), NULL, SND_ASYNC |SND_FILENAME | SND_NOSTOP);
    system("pause");
    return 0;
}

3 付録

  • PlaySound() 関数は .wav 形式のオーディオ ファイルの再生のみをサポートするため、サポートされる形式は単一です。
  • mp3、ogg、flac、oga、ac3、aac、wav などのオーディオ ファイルの再生をサポートするには、mciSendString() 関数を使用してください。
関数 オーディオ形式
音を出す() .wav オーディオ形式のみをサポート
mciSendString() mp3、ogg、flac、oga、ac3、aac、wavc、その他のオーディオ形式をサポート

   

  1. mciSendString の関数宣言は次のとおりです。
BOOL mciSendString(“Command1 FILE Command2”,NULL,0,NULL);

仮パラメータ「Command1 FILE Command2」の 3 つの変数は、論理 && の関係にあり、可能な組み合わせは次のとおりです。

  • 「コマンド1ファイル」
  • 「コマンド1 ファイル コマンド2」

   
2) mciSendString 関数で必要なヘッダー ファイルは次のとおりです。

#include<windows.h>
#pragma comment(lib,"winmm.lib")

3.1 一度プレイする

    //DoMusic.cpp

#include "stdafx.h"
#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    mciSendString(TEXT("play .\\World.mp3"), NULL, 0, NULL);
    system("pause");
    return 0;
}

3.2 リピート再生

    //DoMusic.cpp

#include "stdafx.h"
#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    mciSendString(TEXT("play .\\World.mp3 repeat"), NULL, 0, NULL);
    system("pause");
    return 0;
}

3.3 再生を終了する

    //DoMusic.cpp

#include "stdafx.h"
#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")

int main()
{
    
    
    mciSendString(TEXT("close .\\World.mp3 repeat"), NULL, 0, NULL);
    system("pause");
    return 0;
}

おすすめ

転載: blog.csdn.net/sanqima/article/details/127116934