DMUS_PMSG
DMUS_PMSG 構造体は、すべての DirectMusic メッセージに共通する情報によって構成されている。しかし、C は継承をサポートしていないので、次のシンタックスに展開される DMUS_PMSG_PART マクロを含めることにより、この構造体のメンバは (DMUS_PMSG 自体を含め) すべてのメッセージ タイプに含まれる。
typedef struct DMUS_PMSG {
DWORD dwSize;
REFERENCE_TIME rtTime;
MUSIC_TIME mtTime;
DWORD dwFlags;
DWORD dwPChannel;
DWORD dwVirtualTrackID;
IDirectMusicTool* pTool;
IDirectMusicGraph* pGraph;
DWORD dwType;
DWORD dwVoiceID;
DWORD dwGroupID;
IUnknown* punkUser;
} DMUS_PMSG;
- dwSize
- 構造体のサイズ。バイト単位で指定する。このメンバは、IDirectMusicPerformance::AllocPMsg によって初期化される。
- rtTime
- メッセージの演奏を開始する基準タイム。dwFlags により変更される。DMUS_PMSGF_REFTIME が dwFlags 内にある場合だけ使われる。
- mtTime
- メッセージの演奏を開始するミュージック タイム。dwFlags によって変更される。DMUS_PMSGF_MUSICTIME が dwFlags 内にある場合だけ使われる。
- dwFlags
- さまざまなビット (「DMUS_PMSGF_FLAGS」と「DMUS_TIME_RESOLVE_FLAGS」を参照)。DMUS_PMSGF_REFTIME または DMUS_PMSGF_MUSICTIME を保持していなければならない。
- dwPChannel
- パフォーマンス チャンネル (P チャンネル)。ポート、チャンネル グループ、および MIDI チャンネルは、IDirectMusicPerformance::PChannelInfo メソッドを使うことによって、この値から取り出せる。テンポ メッセージなど、チャンネル固有ではないメッセージについては、この値を 0 に設定する。
- dwVirtualTrackID
- トラックの識別子。メッセージがトラックによって送信されていない場合、0 に設定する。
- pTool
- ツール インターフェイスのアドレス。IDirectMusicGraph::StampPMsg を使って設定できる。メッセージが出力ツール以外のツールに送られない場合は NULL に設定できる。
- pGraph
- ツール グラフ インターフェイスのアドレス。IDirectMusicGraph::StampPMsg を使って設定できる。メッセージが出力ツール以外のツールに送られない場合は NULL に設定できる。
- dwType
- メッセージ タイプ (DMUS_PMSGT_TYPES を参照 )。
- dwVoiceID
- 将来の使用に備えて予約されている。0 を設定しなければならない。
- dwGroupID
- メッセージがトラックによって生成されている場合、そのメッセージが所属するトラック グループまたはグループの識別子(トラックは、IDirectMusicSegment::InsertTrack メソッドでグループに割り当てられる)。ほとんどの目的について、この値は 0xFFFFFFF でもよい。
- punkUser
- アプリケーションによって提供される IUnknown インターフェイスのアドレス。このポインタは、メッセージを解放したときに常に解放される。アプリケーションがオブジェクトを保持したい場合は、メッセージを解放する前に、AddRef を呼び出さなければならない。メッセージが COM ポインタを必要としない場合、この値は NULL でもよい。
注意
DMUS_PMSG 構造体は、dwType メンバに以下の値を持つメッセージについて、それ自体によって使われる。
- DMUS_PMSGT_STOP
- このタイプのメッセージを送信すると、指定されたタイムにパフォーマンスが停止する。
- DMUS_PMSGT_DIRTY
- 制御セグメントが開始または終了するとき、セグメントおよびパフォーマンス グラフ内のすべてのツールは、このタイプのメッセージを受け取る。これは、セグメント内のすべてのツールとパフォーマンス グラフが GetParam の呼び出しでデータをキャッシングする場合、GetParam を再度呼び出して、それぞれのデータをリフレッシュしなければならないことを意味する。このメッセージ タイプが必要なツールは、IDirectMusicTool::GetMediaTypes の呼び出しでこれを指定しなければならない。パフォーマンス グラフ内のツールは、パフォーマンス内の各セグメントについて、メッセージのコピーを 1 部だけ受け取る。このようなツールは、同じタイム スタンプの付いた余分なメッセージを無視しても安全である。
Windows NT/2000 : Windows 2000 が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : dmusici.h で宣言。
参照
IDirectMusicPerformance::SendPMsg