WAVE リソースの再生
PlaySound 関数を使用すると、リソースとして格納されているサウンドを再生できます。 これは sndPlaySound 関数を使用しても可能ですが、 sndPlaySound ではリソースを検索、読み込み、ロック、ロック解除、解放する必要があります。 PlaySound は、このすべてを 1 行のコードで実現します。
PlaySound の例
PlaySound("SoundName", hInst, SND_RESOURCE | SND_ASYNC);
sndPlaySound の例
SND_MEMORY フラグは、 lpszSoundName パラメーターが WAVE ファイルのメモリ内イメージへのポインターであることを示します。 WAVE ファイルをリソースとしてアプリケーションに含めるには、アプリケーションのリソース スクリプトに次のエントリを追加します (。RC) ファイル。
soundName WAVE c:\sounds\bells.wav
soundName という名前は、この WAVE リソースを参照するために指定する名前のプレースホルダーです。 WAVE リソースは、他のアプリケーション定義の Windows リソースと同様に読み込まれ、アクセスされます。 次の例の PlayResource 関数は、指定された WAVE リソースを再生します。
BOOL PlayResource(LPSTR lpName)
{
BOOL bRtn;
LPSTR lpRes;
HANDLE hResInfo, hRes;
// Find the WAVE resource.
hResInfo = FindResource(hInst, lpName, "WAVE");
if (hResInfo == NULL)
return FALSE;
// Load the WAVE resource.
hRes = LoadResource(hInst, hResInfo);
if (hRes == NULL)
return FALSE;
// Lock the WAVE resource and play it.
lpRes = LockResource(hRes);
if (lpRes != NULL) {
bRtn = sndPlaySound(lpRes, SND_MEMORY | SND_SYNC |
SND_NODEFAULT);
UnlockResource(hRes);
}
else
bRtn = 0;
// Free the WAVE resource and return success or failure.
FreeResource(hRes);
return bRtn;
}
この関数を使用して WAVE リソースを再生するには、次の例に示すように、リソースの名前を含む文字列へのポインターを関数に渡します。
PlayResource("soundName");