Platform SDK: DirectX

IDirectMusicTrack::Play

IDirectMusicTrack::Play メソッドは、トラックを演奏する。このメソッドは、メッセージの作成と送信など、セグメントの演奏時にトラックが行う必要のある任意の操作を実行する。

HRESULT Play(
  void* pStateData, 
  MUSIC_TIME mtStart,
  MUSIC_TIME mtEnd,
  MUSIC_TIME mtOffset
  DWORD dwFlags, 
  IDirectMusicPerformance* pPerf, 
  IDirectMusicSegmentState* pSegSt,
  DWORD dwVirtualID
);

パラメータ

pStateData
IDirectMusicTrack::InitPlay メソッドが返した状態データ。データのフォーマットと使用方法は、トラックに固有である。
mtStart
開始タイム。
mtEnd
終了タイム。
mtOffset
IDirectMusicPerformance::SendPMsg に渡されるすべてのメッセージに追加されるオフセット。
dwFlags
この呼び出しの状態を示すフラグ。DMUS_TRACKF_FLAGS を参照すること。値 0 は、Play の呼び出しによって、再生が前の呼び出しから継続されることを意味する。
pPerf
メッセージの割り当てと送信に使われるパフォーマンス。
pSegSt
このトラックが所属するセグメント状態。IDirectMusicSegmentState::QueryInterface メソッドを呼び出して、IDirectMusicGraph インターフェイスを取得することもできる。たとえば IDirectMusicGraph::StampPMsg を呼び出す場合である。
dwVirtualID
トラックの仮想識別子。IDirectMusicPerformance::SendPMsg から渡されるすべてのメッセージの dwVirtualTrackID メンバ (DMUS_PMSG を参照) にこの値を書き込まなければならない。

戻り値

成功すれば S_OK または DMUS_S_END を返す。

失敗すれば次のエラー値のいずれかを返す。

DMUS_E_NOT_INIT
E_POINTER

注意

トラックが空の場合、このメソッドは DMUS_S_END を返す。

トラックは、優先順位が中低度のスレッド内にメッセージを生成する。ファイルのデータをストリーム化するコードなど、時間のかかる関数を、トラックの Play メソッド内から呼び出すことができる。ただし、安全なマルチスレッド化のためのガイドラインに従うこと。

動作環境

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dmusici.h で宣言。