Platform SDK: DirectX |
ロビー メッセージは、2 つのカテゴリに分けることができる。つまり、DirectPlay によって定義されるメッセージと、アプリケーションによって定義されるメッセージである。
DirectPlay 定義のメッセージは、DirectPlay によって自動的に生成され、アプリケーションの変更を通知するためにロビーに送信されるシステム メッセージか、アプリケーションとロビーの間でやり取りされる標準のメッセージ タイプのいずれかである。
アプリケーション定義のメッセージに対する標準メッセージの利点は、受信側が常に標準メッセージを解釈できるということである。ロビー クライアントは、必ずしもアプリケーションからのカスタム メッセージを処理できるとは限らない。また、アプリケーションもロビー クライアントからのカスタム メッセージを処理できない場合がある。
ロビー メッセージを受信するには、IDirectPlayLobby3::ReceiveLobbyMessage メソッドを使用する。メッセージのカテゴリは、lpdwMessageFlags パラメータを調べることによって判断することができる。DPLMSG_SYSTEM または DPLMSG_STANDARD のどちらでもない場合、メッセージはアプリケーション定義である。
ロビーは、すべての標準メッセージを処理できる必要がある。アプリケーションで DPLMSG_GETPROPERTY メッセージを使用する場合は、DPLMSG_GETPROPERTYRESPONSE メッセージを処理できる必要がある (「ロビーとの関係の維持」を参照)。
DirectPlay 定義のメッセージは、すべてメッセージ タイプを示す DWORD 値から始まる。ReceiveLobbyMessage を使用してメッセージを取得したら、*lpData を DPLMSG_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 メッセージに応答している。「ロビーとの関係の維持」を参照。 |
ロビー メッセージを受信するには、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 メッセージに応答している。「ロビーとの関係の維持」を参照。 |