Platform SDK: DirectX

チュートリアル 4 : 自動リフレッシュ式セッション リストの作成

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectPlay Visual Basic チュートリアル」を参照すること。

[C++]

アプリケーションでは、IDirectPlay4::EnumSessions を非同期的に呼び出して、自動リフレッシュ式のセッション リストを維持することができる。この方法は、Bellhop、DPChat、DPSlots、Duel、および Override の 5 つの DirectPlay サンプルで利用されている。これらのサンプル アプリケーションのコード例は、いずれも参照可能である。

自動リフレッシュ式のセッション リストを作成するためのステップは、次のとおりである。

  1. IDirectPlay4::EnumSessions を呼び出す。このとき、DPENUMSESSIONS_ASYNC フラグを設定し、タイムアウトをゼロに設定する (これにより、サービス プロバイダのデフォルト値が使用される)。このメソッドはセッションを列挙せず、直ちに戻る。しかし、DirectPlay はバックグラウンドでセッションを列挙している。
  2. すべてのセッションを表示するユーザー インターフェイスを表示する。セッション リストのリフレッシュを実行する間隔に応じて、タイマを設定する。アプリケーションで列挙のデフォルトのタイムアウト間隔を確認するには、IDirectPlay4::GetCaps を呼び出す。
  3. タイマが開始するたびに、EnumSessions を呼び出して現在のセッション リストを取得する。このリストは、アクティブなセッションの完全なリストである。古いセッションは削除され、新しいセッションは追加され、既存のセッションは更新されている。EnumSessions を呼び出す前にリストからすべての項目を削除し、EnumSessionsCallback2 関数によってリストにセッションを再度追加する。
  4. DPERR_CONNECTING 以外のエラーが返された場合は、EnumSessions によって返されたエラー結果を確認し、タイマを停止する。これによりユーザーは、接続を解除したり、キャンセルしたりすることができるようになる。