Microsoft DirectX 8.0 (C++)

DirectMusic インターフェイス

ここでは、DirectMusic COM インターフェイスのリファレンスを記述する。

現在のバージョンのインターフェイスは、名前の最後に "8" を付けて、宣言や定義を行う。最新バージョンのインターフェイスを確実に使用するには、ポインタの宣言時にこのサフィックスを必ず付ける。

  IKsControl および IReferenceClock は、この規則の例外とする。

メソッドが取得するインターフェイスは、常に基本バージョンである。基本バージョンよりも新しいバージョンが存在する場合は、次の例のように、QueryInterface を呼び出してそれを取得する必要がある。lpdmBand は、IDirectMusicBand8 インターフェイス ポインタである。

IDirectMusicSegment * lpdmseg;
IDirectMusicSegment8 * lpdmseg8;
 
HRESULT hr = lpdmBand->CreateSegment(&lpdmseg);
if (SUCCEEDED(hr)) 
{
    hr = lpdmseg->QueryInterface(IID_IDirectMusicSegment8, 
        (LPVOID *)&lpdmseg8);
}

インターフェイスの新しいバージョンがない場合、サフィックス 8 の付いたインターフェイス名は、ただの定義である。たとえば、IDirectMusicGraph8 は、あらゆる点で IDirectMusicGraph と等しい。このような場合、新しいインターフェイスを問い合わせる必要はないが、問い合わせをすることは何の害もない上に、DirectX の将来のバージョンに備えて、コードの保守性を高めることができる。

IN パラメータとしてインターフェイス ポインタを渡すことができる場合は、古いバージョンを受け入れるようにメソッドが宣言されていても、新しいバージョンを渡すことができる。たとえば、IDirectMusicPerformance8::PlaySegmentEx には、IDirectMusicSegment または IDirectMusicSegment8 へのポインタを渡すことができる。

このドキュメントは、インターフェイスの最新バージョンに限定した、完全なリファレンス トピックを収録している。IDirectMusicGraph8 のような定義が存在する場合、インターフェイスはその名前で記載されている。