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
- 構造体のサイズ。バイト単位で指定する。このメンバは、IDirectMusicPerformance8::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 チャンネル)。IDirectMusicPerformance8::PChannelInfo メソッドを使って、この値からポート、チャンネル グループ、および MIDI チャンネルを派生できる。テンポ メッセージなど、チャンネル固有ではないメッセージについては、この値を 0 に設定する。メッセージを複数のチャンネルに送信するには、次のいずれかの値を使用する。
- DMUS_PCHANNEL_BROADCAST_AUDIOPATH
- メッセージのコピーをオーディオパスのすべてのチャンネルに送信する。
- DMUS_PCHANNEL_BROADCAST_GROUPS
- メッセージのコピーをパフォーマンス内のそれぞれのチャンネル グループに送信する。システム エクスクルーシブ メッセージなど、メッセージを各チャンネル グループに一度だけ送信する必要がある場合に使用する。
- DMUS_PCHANNEL_BROADCAST_PERFORMANCE
- メッセージのコピーをパフォーマンスのすべてのチャンネルに送信する。
- DMUS_PCHANNEL_BROADCAST_SEGMENT
- メッセージのコピーをセグメントのすべてのチャンネルに送信する。
- dwVirtualTrackID
- トラックの識別子。メッセージがトラックによって送信されていない場合は、0 に設定する。
- pTool
- ツール インターフェイスのアドレス。IDirectMusicGraph8::StampPMsg を使用して設定できる。メッセージが出力ツール以外のツールに送られない場合は NULL に設定できる。
- pGraph
- ツール グラフ インターフェイスのアドレス。IDirectMusicGraph8::StampPMsg を使用して設定できる。メッセージが出力ツール以外のツールに送られない場合は NULL に設定できる。
- dwType
- メッセージ タイプ (「DMUS_PMSGT_TYPES」を参照)。
- dwVoiceID
- 予約済み。0 でなければならない。
- dwGroupID
- メッセージがトラックによって生成されている場合、そのメッセージが所属するトラック グループまたはグループの識別子 (トラックは、IDirectMusicSegment8::InsertTrack メソッドでグループに割り当てられる)。ほとんどの目的について、この値は 0xFFFFFFF でもよい。
- punkUser
- アプリケーションによって提供される IUnknown インターフェイスのアドレス。このポインタは、メッセージを解放したときに常に解放される。アプリケーションでオブジェクトを保持する場合は、メッセージを解放する前に、AddRef を呼び出さなければならない。メッセージが COM ポインタを必要としない場合、この値は NULL でもよい。
注意
DMUS_PMSG 構造体は、dwType メンバに以下の値を保持するメッセージについて、それ自体によって使われる。
- DMUS_PMSGT_STOP
- このタイプのメッセージを送信すると、指定されたタイムにパフォーマンスが停止する。
- DMUS_PMSGT_DIRTY
- 制御セグメントが開始または終了するとき、セグメントおよびパフォーマンス グラフ内のすべてのツールは、このタイプのメッセージを受け取る。これは、セグメント内のすべてのツールとパフォーマンス グラフが、パラメータ取得メソッドの呼び出しでデータをキャッシングする場合、同じメソッドを再度呼び出して、それぞれのデータを更新しなければならないことを意味する。このメッセージ タイプが必要なツールは、IDirectMusicTool8::GetMediaTypes の呼び出しでこれを指定しなければならない。パフォーマンス グラフ内のツールは、パフォーマンス内の各セグメントについて、メッセージのコピーを 1 部だけ受け取る。このようなツールは、同じタイム スタンプの付いた余分なメッセージを無視しても安全である。
ヘッダー : dmusici.h で宣言。
参照
IDirectMusicPerformance8::SendPMsg