Platform SDK: DirectX

ロビー メッセージの使用

ロビー メッセージは、2 つのカテゴリに分けることができる。つまり、DirectPlay によって定義されるメッセージと、アプリケーションによって定義されるメッセージである。

DirectPlay 定義のメッセージは、DirectPlay によって自動的に生成され、アプリケーションの変更を通知するためにロビーに送信されるシステム メッセージか、アプリケーションとロビーの間でやり取りされる標準のメッセージ タイプのいずれかである。

アプリケーション定義のメッセージに対する標準メッセージの利点は、受信側が常に標準メッセージを解釈できるということである。ロビー クライアントは、必ずしもアプリケーションからのカスタム メッセージを処理できるとは限らない。また、アプリケーションもロビー クライアントからのカスタム メッセージを処理できない場合がある。

[C++]

ロビー メッセージを受信するには、IDirectPlayLobby3::ReceiveLobbyMessage メソッドを使用する。メッセージのカテゴリは、lpdwMessageFlags パラメータを調べることによって判断することができる。DPLMSG_SYSTEM または DPLMSG_STANDARD のどちらでもない場合、メッセージはアプリケーション定義である。

ロビーは、すべての標準メッセージを処理できる必要がある。アプリケーションで DPLMSG_GETPROPERTY メッセージを使用する場合は、DPLMSG_GETPROPERTYRESPONSE メッセージを処理できる必要がある (「ロビーとの関係の維持」を参照)。

DirectPlay 定義のメッセージは、すべてメッセージ タイプを示す DWORD 値から始まる。ReceiveLobbyMessage を使用してメッセージを取得したら、*lpDataDPLMSG_GENERIC 構造体にキャストして、その構造体の dwType メンバを調べる。続いて、*lpData を適切なメッセージ構造体にキャストし、以降の処理に備える。

以下は、標準メッセージに対する DPLMSG_GENERIC.dwType の値と、それぞれの値の構造体および原因を示している。

dwType の値 メッセージ構造体 原因
DPLSYS
_APPTERMINATED
DPLMSG_SYSTEMMESSAGE アプリケーションが終了した。
DPLSYS
_CONNECTIONSETTINGSREAD
DPLMSG_SYSTEMMESSAGE アプリケーションが接続設定を読み取った。
DPLSYS
_DPLAYCONNECTFAILED
DPLMSG_SYSTEMMESSAGE アプリケーションが DirectPlay セッションへの接続に失敗した。
DPLSYS
_DPLAYCONNECTSUCCEEDED
DPLMSG_SYSTEMMESSAGE アプリケーションが DirectPlay セッションへの接続に成功した。
DPLSYS
_GETPROPERTY
DPLMSG_GETPROPERTY アプリケーションがロビーのプロパティを要求している。「ロビーとの関係の維持」を参照。
DPLSYS
_GETPROPERTYRESPONSE
DPLMSG_GETPROPERTYRESPONSE ロビーが DPLMSG_GETPROPERTY メッセージに応答している。「ロビーとの関係の維持」を参照。
DPLSYS
_NEWCONNECTIONSETTINGS
DPLMSG_SYSTEMMESSAGE ロビー クライアントが RunApplication を呼び出したときに、待機中のアプリケーションが見つかった。「動的ロビー接続のサポート」を参照。
DPLSYS
_NEWSESSIONHOST
DPLMSG_NEWSESSIONHOST アプリケーション セッションの所有者が新しくなった。
DPLSYS
_SETPROPERTY
DPLMSG_SETPROPERTY アプリケーションがロビーのプロパティを設定している。「ロビーとの関係の維持」を参照。
DPLSYS
_SETPROPERTYRESPONSE
DPLMSG_SETPROPERTYRESPONSE ロビーが DPLMSG_SETPROPERTY メッセージに応答している。「ロビーとの関係の維持」を参照。

[Visual Basic]

ロビー メッセージを受信するには、DirectPlayLobby3.ReceiveLobbyMessage メソッドを使用する。メッセージのカテゴリは、messageFlags パラメータに返される値によって判断することができる。DPLMSG_SYSTEM または DPLMSG_STANDARD のどちらでもない場合、メッセージはアプリケーション定義である。

ロビーは、すべての標準メッセージを処理できる必要がある。アプリケーションで DPLSYS_GETPROPERTY メッセージを使用する場合は、DPLSYS_GETPROPERTYRESPONSE メッセージを処理できなければならない (「ロビーとの関係の維持」を参照)。

DirectPlay 定義のメッセージはすべて、メッセージ タイプを識別する CONST_DPSYSMSGTYPES 列挙型の値から始まる。この値を取得するには、DirectPlayMessage.ReadLong を使用する。

以下は、メッセージ タイプと、それぞれの値に関連するメッセージの原因を示している。

メッセージ タイプ 原因
DPLSYS
_APPTERMINATED
アプリケーションが終了した。
DPLSYS
_CONNECTIONSETTINGSREAD
アプリケーションが接続設定を読み取った。
DPLSYS
_DPLAYCONNECTFAILED
アプリケーションが DirectPlay セッションへの接続に失敗した。
DPLSYS
_DPLAYCONNECTSUCCEEDED
アプリケーションが DirectPlay セッションへの接続に成功した。
DPLSYS
_GETPROPERTY
アプリケーションがロビーのプロパティを要求している。「ロビーとの関係の維持」を参照。
DPLSYS
_GETPROPERTYRESPONSE
ロビーが DPLMSG_GETPROPERTY メッセージに応答している。「ロビーとの関係の維持」を参照。
DPLSYS
_NEWCONNECTIONSETTINGS
ロビー クライアントが RunApplication を呼び出したときに、待機中のアプリケーションが見つかった。「動的ロビー接続のサポート」を参照。
DPLSYS
_NEWSESSIONHOST
アプリケーション セッションの所有者が新しくなった。
DPLSYS
_SETPROPERTY
アプリケーションがロビーのプロパティを設定している。「ロビーとの関係の維持」を参照。
DPLSYS
_SETPROPERTYRESPONSE
ロビーが DPLMSG_SETPROPERTY メッセージに応答している。「ロビーとの関係の維持」を参照。