Microsoft DirectX 8.0 (C++) |
IDirectMusicTrack8::SetParamEx または IDirectMusicTrack8::GetParamEx を使ってパラメータを設定または取得するときに、パラメータはメソッドを呼び出したトラックに関連付けられる。ただし、IDirectMusicPerformance8::SetParam、IDirectMusicPerformance8::GetParam、IDirectMusicSegment8::SetParam、または IDirectMusicSegment8::GetParam を呼び出すときに、DirectMusic は適切なトラックを検索する必要がある。
通常は、目的のパラメータがどのトラックに含まれるかを、DirectMusic に決定させることができる。この場合、dwGroupBits を 0xFFFFFFFF に、dwIndex を DMUS_SEG_ANYTRACK に設定する。たとえば、次の IDirectMusicSegment8::SetParam の呼び出しでは、セグメントのループでテンポがリセットされないように、テンポ トラックをオフにしている。
pIDMSegment->SetParam(GUID_DisableTempo, 0xFFFFFFFF, DMUS_SEG_ALLTRACKS, 0, NULL);
ただし、トラックを識別しなければならない場合もある。一般的には、セグメントに同じタイプのトラックが 2 つ以上含まれている場合である。目的のトラックでパラメータを設定または取得するには、グループまたはインデックス値を使って、トラックを識別しなければならない。
すべてのトラックは 1 つまたは複数のグループに属し、それぞれのグループは dwGroupBits パラメータのビットで表される。dwGroupBits は、後で説明するメソッドの 1 つのパラメータである。トラックは、パフォーマンスに挿入されるときに、1 つまたは複数のグループに割り当てられる。「IDirectMusicSegment8::InsertTrack」を参照すること。ファイルからロードされるセグメントの場合、トラック グループはセグメントのオーサーによって割り当てられる。
トラックは、属しているグループそれぞれにおいて、ゼロから始まるインデックス値で識別される。インデックス値は、トラックが挿入された順序で決定される。
あるセグメントに、次の表に示すトラックが格納されていると仮定する。
トラック | グループ ビット |
---|---|
A | 0x1 |
B | 0x2 |
C | 0x1 |
D | 0x3 |
グループ 1 はトラック A、トラック C、およびトラック D を含み、グループ 2 はトラック B とトラック D を含む。dwGroupBits を 1、dwIndex を 0 にして設定メソッドまたは取得メソッドを呼び出すと、パラメータは、グループ 1 の最初のトラックであるトラック A から取得される。dwIndex が 1 の場合は、グループで 2 番目のトラック C からパラメータが取得される。トラック D は、グループ 1 とグループ 2 の、2 つのグループに属している。したがって、このトラックは、dwGroupBits = 1 および dwIndex =2、または dwGroupBits = 2 および dwIndex = 1 の組み合わせのどちらかで識別される。
dwGroupBits に複数のビットを設定すると、それらのすべてのビットを含む n 番目のトラックからパラメータが取得される。ここで n は dwIndex 内の値である。