次の方法で共有


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");