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;
}