Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectMusic Visual Basic チュートリアル」を参照すること。
CEchoTool クラスを定義した後、アプリケーションはツールオブジェクトを作成し、グラフに挿入し、パフォーマンスに追加するので、パイプライン内の適切なメッセージを横取りできるようになる。
次のコードは CEchoTool クラスのインスタンスを作成し、ツールが作成すべきエコーの数を初期化し、ツールを保持するグラフを作成し、そのグラフをパフォーマンスに追加する (サンプル アプリケーション EchoTool では、この作業の一部をヘルパー関数 AddTool で実行している。ここでは追跡を容易にするため、コードに変更を加えている)。
/* pPerf が、パフォーマンス オブジェクトの IDirectMusicPerformance インターフェイスへの有効なポインタであることを想定している。*/ CEchoTool *pEchoTool; IDirectMusicGraph* pGraph; pEchoTool = new CEchoTool; if (pEchoTool) { pEchoTool->SetEchoNum(0); // ツールを保持するために IDirectMusicGraph オブジェクトを作成する。 if (SUCCEEDED(CoCreateInstance( CLSID_DirectMusicGraph, NULL, CLSCTX_INPROC, IID_IDirectMusicGraph, (void**)&pGraph))) { // ツールをグラフに追加する。 if (SUCCEEDED(pGraph->InsertTool( (IDirectMusicTool*)pCEchoTool, NULL, // すべての P チャンネルに適用する。 0, // ほかの P チャンネルは何個あるか。 0))) // グラフ内のツールのインデックス番号。 { // グラフをパフォーマンスに追加する。この結果、参照 // カウントが増えるので、オリジナルのグラフは解放 // できるようになる。 pPerf->SetGraph(pGraph); } pGraph->Release(); } }
パフォーマンス内のグラフの設定により、すべてのセグメント内のメッセージは、このツールによって処理される機会を得る。代わりに、IDirectMusicSegment::SetGraph メソッドを使って、特定のセグメントにのみツールを適用することもできる。