Microsoft DirectX 8.0 (C++) |
IDirectMusicSegment8::SetTrackConfig と IDirectMusicSegmentState8::SetTrackConfig の各メソッドを使って、アプリケーションでセグメント内の任意のトラックの動作を変更できる。次のような構成オプションがある。
トラック構成フラグの一覧および標準トラックで有効なフラグの表については、「IDirectMusicSegmentState8::SetTrackConfig」を参照すること。
DMUS_TRACKCONFIG_CONTROL_PLAY と DMUS_TRACKCONFIG_CONTROL_NOTIFICATION の 2 つの構成フラグは、セカンダリ制御セグメントの機能を拡張する。通常、セカンダリ制御セグメントは、パフォーマンスによって IDirectMusicTrack8::GetParam の呼び出しから取得されたパラメータだけを管理する。ほかのセグメントと同様に、制御セグメントはメッセージを送信することによってパフォーマンスを変更することもできる。たとえば、パフォーマンスのボリュームを変更できる。このような変更はプライマリ セグメントのパラメータをオーバーライドしているように見えるが、実際のコントロールの変更とは 2 つの点で異なる。
トラックについて DMUS_TRACKCONFIG_CONTROL_PLAY または DMUS_TRACKCONFIG_CONTROL_NOTIFICATION フラグが設定されている場合、プライマリ セグメントの対応するトラックは無効になる。制御セグメントが停止すると再び有効になる。
SetTrackConfig メソッドは IDirectMusicSegmentState8 インターフェイスおよび IDirectMusicSegment8 で使用できる。パラメータは同じであるが、その動作は次のように異なる。
注 セグメント状態のトラック構成が、準備時間の後ではなく、直ちに変更されるようにするには、IDirectMusicPerformance8::Invalidate を呼び出す。
次のサンプル コードでは、pSegment でアドレスが指定されたセグメントのコード進行トラックを無効にしている。コード進行は、制御セグメントのパラメータとしてある要素を全要素にコピーするので、DMUS_TRACKCONFIG_CONTROL_ENABLED フラグをオフにすることによってこの処理を行う。
HRESULT hr = pSegment->SetTrackConfig(CLSID_DirectMusicChordTrack, -1, DMUS_SEG_ALLTRACKS, 0, DMUS_TRACKCONFIG_CONTROL_ENABLED);
次の例では、逆に、すべてのコード トラックの演奏を有効にしている。
hr = pSegment->SetTrackConfig(CLSID_DirectMusicChordTrack, -1, DMUS_SEG_ALLTRACKS, DMUS_TRACKCONFIG_CONTROL_ENABLED, 0);
関連情報については、次のトピックを参照すること。