Platform SDK: DirectX

ステップ 6 : DirectMusic のシャットダウン

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。

[C++]

終了する前に、プログラムは音色のアンロード、作成したすべてのオブジェクトの解放、および COM の参照の解除を実行しなければならない (CoInitialize の呼び出し 1 つにつき、CoUninitialize の呼び出し 1 つを対応させなければならない点に注意すること)。

必要なクリーンアップを実行するには、次の関数を使用する。

HRESULT FreeDirectMusic()
{
// 演奏中の音楽がある場合は、演奏を中止する。実際には、
// 音色をアンロードするとき、または
// パフォーマンスをクローズするときに音楽は停止するので、
// この処理は必ずしも必要ではない。
g_pPerf->Stop( NULL, NULL, 0, 0 );
 
// 音色をアンロードする。これにより、無音になる。
// CloseDown はすべての音色をアンロードする。
// したがって、この呼び出しは必要である。
g_pMIDISeg->SetParam(GUID_Unload, -1, 0, 0, (void*)g_pPerf);
 
// セグメントを解放する。
g_pMIDISeg->Release();
 
// パフォーマンス オブジェクトをクローズし、解放する。
g_pPerf->CloseDown();
g_pPerf->Release();
 
// ローダー オブジェクトを解放する。
g_pLoader->Release();
 
// COM を解放する。
CoUninitialize();
 
return S_OK;
}