Microsoft DirectX 8.0 (C++) |
メッセージ ハンドラは、ロビー対象アプリケーション オブジェクトがロビー対象アプリケーションとの通信に使用するコールバック関数である。ロビー対象アプリケーション メッセージ ハンドラには、以下の情報を渡す 3 つのパラメータがある。
ユーザー コンテキスト値は、IDirectPlay8LobbyClient::Initialize を呼び出すときにロビー クライアントが定義する。ユーザー コンテキスト値は、別々のオブジェクトから送信されたメッセージを区別する目的などに使用できる。メッセージ ハンドラ関数の完全な記述については、「PFNDPNMESSAGEHANDLER」を参照すること。
メッセージ ハンドラは、ロビー対象アプリケーション固有の以下の 4 つのメッセージを処理できなければならない。
これらのメッセージの大半は、接続が変化したとき、またはロビー対象アプリケーションが接続情報を要求したときに、ロビー対象アプリケーション オブジェクトが生成する。ただし、DPL_MESSAGE_RECEIVE は例外である。このメッセージは、ロビー クライアントからゲーム アプリケーションにデータを直接渡すために使用される。
注 Microsoft® DirectPlay® メッセージ ハンドラは、マルチスレッド環境で適切に動作するように書かれている必要がある。そのように書かれてないと、アプリケーションが正常に機能しない可能性がある。
このメッセージは、ロビー クライアントがアプリケーションをセッションに接続するために IDirectPlay8LobbyClient::ConnectApplication を呼び出したときに、ロビー対象アプリケーション オブジェクトが送信する。関連付けられた DPL_MESSAGE_CONNECT 構造体には、以下の情報が含まれる。
DirectPlay は、関連付けられたロビー クライアントから、セッションの接続を修正するために IDirectPlay8LobbyClient::SetConnectionSettings メソッドが呼び出されるたびに、このメッセージを送信する。関連付けられた DPL_MESSAGE_CONNECTION_SETTINGS 構造体には、更新済みの接続情報が格納される。
このメッセージは、ロビー クライアントが IDirectPlay8LobbyClient::ReleaseApplication を呼び出してアプリケーションをセッションから切断するときに、送信される。アプリケーションでは、接続をそのリストから削除し、セッションに関連付けられたデータをすべて解放しなければならない。
このメッセージを使用すると、ロビー クライアントからアプリケーションにデータを渡すことができる。DirectPlay は、ロビー クライアントからアプリケーションに、DPL_MESSAGE_RECEIVE 構造体を使ってデータ ブロックを渡す。このデータの処理は、アプリケーションが行わなければならない。
詳細については、「ロビー対象アプリケーション メッセージ ハンドラのサンプル」を参照すること。