Microsoft DirectX 8.0 (C++)

ロビー クライアント メッセージ ハンドラの実装

メッセージ ハンドラは、ロビー クライアント オブジェクトがロビー クライアントとの通信に使用するコールバック関数である。ロビー クライアント メッセージ ハンドラには、以下の情報を渡す 3 つのパラメータがある。

ユーザー コンテキスト値は、IDirectPlay8LobbyClient::Initialize を呼び出すときにロビー クライアントが定義する。ユーザー コンテキスト値は、別々のオブジェクトから送信されたメッセージを区別する目的などに使用できる。メッセージ ハンドラ関数の完全な記述については、「PFNDPNMESSAGEHANDLER」を参照すること。

メッセージ ハンドラは、ロビー クライアント固有の以下の 5 つのメッセージを処理できなければならない。

これらのメッセージの大半は、ゲームの状態が変化したとき、またはロビー クライアントが情報を要求したときに、ロビー クライアント オブジェクトが生成する。ただし、DPL_MESSAGE_RECEIVE は例外である。このメッセージは、ゲーム アプリケーションからロビー クライアントにデータを直接渡すために使用される。

  Microsoft® DirectPlay® メッセージ ハンドラは、マルチスレッド環境で適切に動作するように書かれている必要がある。そのように書かれてないと、アプリケーションが正常に機能しない可能性がある。

DPL_MSGID_CONNECT

このメッセージは、ロビー可能なアプリケーションの起動後に、ロビー クライアントが送信する。このメッセージは、アプリケーションの接続が成功したことを示す。関連する DPL_MESSAGE_CONNECT 構造体には、以下を含む各種の情報が保持される。

DPL_MSGID_CONNECTION_SETTINGS

このメッセージは、関連付けられたロビー可能なアプリケーションから、セッションの接続を修正するために IDirectPlay8LobbiedApplication::SetConnectionSettings メソッドが呼び出されるたびに、DirectPlay が送信する。関連付けられた DPL_MESSAGE_CONNECTION_SETTINGS 構造体には、更新済みの接続情報が格納される。

DPL_MSGID_DISCONNECT

このメッセージは、ロビー可能なアプリケーションが IDirectPlay8LobbiedApplication::Close を呼び出してセッションを抜けるときに、送信される。ロビー クライアント アプリケーションでは、接続をそのリストから削除し、アプリケーションに関連付けられたデータをすべて解放しなければならない。

DPL_MSGID_RECEIVE

このメッセージを使用すると、アプリケーションからロビー クライアントにデータを渡すことができる。DirectPlay は、アプリケーションからロビー クライアントに、DPL_MESSAGE_RECEIVE 構造体を使ってデータ ブロックを渡す。このデータの処理は、ロビー クライアントが行わなければならない。

DPL_MSGID_SESSION_STATUS

このメッセージは、セッションの状態に以下の 6 つの変化のいずれかが発生するたびに、DirectPlay が送信する。

状態変化の種類は、関連付けられた DPL_MESSAGE_SESSION_STATUS 構造体にある dwStatus フィールドの値によって示される。

詳細については、「ロビー クライアント メッセージ ハンドラのサンプル」を参照すること。