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、その他のオーディオ形式をサポート |
- 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;
}