Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。
どの DirectMusic アプリケーションでも中心となるオブジェクトはパフォーマンスであり、セグメントの再生を管理する。次のサンプル関数のように、COM の CoCreateInstance 関数を使ってパフォーマンスを作成する。
IDirectMusicPerformance* CreatePerformance(void) { IDirectMusicPerformance* pPerf; if (FAILED(CoCreateInstance( CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC, IID_IDirectMusicPerformance2, (void**)&pPerf ))) { pPerf = NULL; } return pPerf; }
この関数を使ってグローバル パフォーマンス ポインタを初期化し、後のステップで利用できる。
IDirectMusicPerformance* g_pPerf = CreatePerformance(); if (g_pPerf == NULL) { // 失敗。パフォーマンスは作成されていない。 }
作成したパフォーマンスは、IDirectMusicPerformance::Init メソッドを呼び出して初期化する必要がある。メソッドは DirectMusic オブジェクトを作成して、デフォルト ポートを管理する。IDirectMusic のメソッドに直接アクセスする必要はないため、ポインタを取得する必要ない。したがって、Init の最初のパラメータには NULL を渡す。また、IDirectSound のポインタおよびウィンドウ ハンドルとして NULL を渡すと、DirectMusic は DirectSound オブジェクトを作成し、協調レベルを設定するときに現在のフォーカス ウィンドウを渡す。
if (FAILED(g_pPerf->Init(NULL, NULL, NULL))) { // 失敗。パフォーマンスは初期化されていない。 };
パフォーマンスを作成した後で、初期化を行い、ポートを追加する必要がある。NULL パラメータを渡して IDirectMusicPerformance::AddPort メソッドを呼び出すと、自動的に 1 つのチャンネル グループと共にデフォルト ポート (通常は Microsoft Software Synthesizer) が追加され、そのグループの MIDI チャンネルに P チャンネル 0-15 が割り当てられる。
if (FAILED(pPerf->AddPort(NULL))) { // 失敗。ポートは初期化されていない。 }
次項 : ステップ 3 : ローダーの作成