Microsoft DirectX 8.0 (C++) |
次のコードは、SDK のサンプル LobbyClient にあるメッセージ ハンドラを簡略化したものである。わかりやすくするため、エラー処理コードが削除されている。完全なコードについては、上記サンプルを参照すること。
HRESULT WINAPI DirectPlayLobbyMessageHandler( PVOID pvUserContext, DWORD dwMessageId, PVOID pMsgBuffer ) { switch( dwMessageId ) { case DPL_MSGID_DISCONNECT: { PDPL_MESSAGE_DISCONNECT pDisconnectMsg; pDisconnectMsg = (PDPL_MESSAGE_DISCONNECT)pMsgBuffer; // アプリケーションに関連付けられたデータをすべて解放し、 // リストから接続を削除する。 break; } case DPL_MSGID_RECEIVE: { PDPL_MESSAGE_RECEIVE pReceiveMsg; pReceiveMsg = (PDPL_MESSAGE_RECEIVE)pMsgBuffer; // ロビー アプリケーションがデータを送信した。データを処理し、 // 適切に応答する。 break; } case DPL_MSGID_SESSION_STATUS: { PDPL_MESSAGE_SESSION_STATUS pStatusMsg; pStatusMsg = (PDPL_MESSAGE_SESSION_STATUS)pMsgBuffer; switch( pStatusMsg->dwStatus ) { case DPLSESSION_CONNECTED://セッションが接続された。 break; case DPLSESSION_COULDNOTCONNECT://セッションが接続できない。 break; case DPLSESSION_DISCONNECTED://セッションが切断された。 break; case DPLSESSION_TERMINATED://セッションが終了した。 break; case DPLSESSION_HOSTMIGRATED://ホストが移行した。 break; case DPLSESSION_HOSTMIGRATEDHERE://ホストがここに移行した。 break; } case DPL_MSGID_CONNECTION_SETTINGS: { PDPL_MESSAGE_CONNECTION_SETTINGS pConnectionStatusMsg; pConnectionStatusMsg = (PDPL_MESSAGE_CONNECTION_SETTINGS)pMsgBuffer; // アプリケーションが接続の設定を変更した。 break; } } return S_OK; }