Platform SDK: DirectX

ステップ 6 : パフォーマンスへのツールの追加

[Visual Basic]

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

[C++]

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 メソッドを使って、特定のセグメントにのみツールを適用することもできる。