Platform SDK: DirectX

プレーヤー メッセージの使用

[C++]

プレーヤー メッセージは、IDirectPlay4::Send または IDirectPlay4::SendEx を使用して送信することができる。SendEx によって送信されるメッセージには、優先順位を割り当てることができる。優先順位の高いメッセージが最初に送信される。優先順位は、メッセージの受信順位には影響を与えない。

プレーヤー メッセージ内のデータの編成は、アプリケーションによってのみ決められる。慣例では、最初の要素は、アプリケーションで定義されるメッセージ識別子である。

通常、C++ アプリケーションは、IDirectPlay4::Receive を使用してメッセージ バッファを取得し、それを DPMSG_GENERIC にキャストし、メッセージが DPID_SYSMSG から送信されたものかどうかを確認する。DPID_SYSMSG から送信されたものではない場合、アプリケーションはデータをアプリケーションで定義された汎用タイプにキャストし、その構造体内のメッセージ タイプを確認し、そのメッセージに適したアプリケーション定義タイプに再度キャストする。例として、「Duel サンプル」を参照すること。ここでは、ReceiveMessages 関数と DoApplicationMessage 関数を使用している。

[Visual Basic]

プレーヤー メッセージは、DirectPlay4.Send または DirectPlay4.SendEx. を使用して送信することができる。SendEx によって送信されるメッセージには、優先順位を割り当てることができる。優先順位の高いメッセージが最初に送信される。優先順位は、メッセージの受信順位には影響を与えない。

プレーヤー メッセージ内のデータの編成は、アプリケーションによってのみ決められる。慣例では、最初の要素は、アプリケーションで定義されるメッセージ識別子である。

メッセージ データは、DirectPlayMessage オブジェクトによって表される。送信側のアプリケーションは、DirectPlay4.CreateMessage メソッドを使用して、このオブジェクトを取得する。

プレーヤー メッセージのデータを構築する方法は 2 つある。1 つは、DirectPlayMessage のさまざまな記述用メソッドを使用して、データの要素を 1 つずつ記述する方法である。各要素を記述するごとに、内部の記述ポインタが進む。もう 1 つは、DirectPlayMessage.SetMessageData にユーザー定義型を渡す方法である。ほとんどのアプリケーションでは、最初の方法を使用する。これは、SetMessageData を使用するには、メソッドに渡されるデータの正確なサイズを把握している必要があるからである。このサイズは、常に簡単に把握できるとは限らない。

 :  メッセージ データを設定するためのこれら 2 つの方法を組み合わせて使用することはできない。たとえば、DirectPlayMessage.WriteLong を使用してメッセージ タイプを記述してから、SetMessageData を使用して追加データを記述することはできない。SetMessageData は、メッセージの中身全体を設定する。

データをメッセージから取得するには、DirectPlayMessage の対応する読み取り用メソッドを使用するか、または DirectPlayMessage.GetMessageData を使用する。読み取りメソッドを使用するとき、アプリケーションはデータ要素を記述された順序と同じ順序で読み取る必要がある。GetMessageData は、データが SetMessageData によって設定された場合にのみ使用する。