Microsoft DirectX 8.0 (C++)

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