Microsoft DirectX 8.0 (C++) |
ロビー クライアントは、ロビー サーバーが起動するか、ユーザーが直接起動する。ロビー クライアントは、起動しても、初期化されるまでアプリケーションを起動できない。初期化には、以下の作業が必要になる。
前の 2 つのステップで、ロビー クライアント オブジェクトを作成し、そのオブジェクトとロビー クライアントの間に通信リンクを設定する。最後のステップで、ユーザーのシステムで利用できるロビー可能なアプリケーションを判断する。この情報は、選択されたアプリケーションを起動するために必要である。
次のサンプル コードは、ローカル アプリケーションの列挙方法を示している。これは、SDK のサンプル LobbyClient にある EnumRegisteredApplications 関数を簡略化したものである。わかりやすくするため、エラー処理およびダイアログ ボックス関連のコードが削除されている。完全なコードについては、SDK のサンプル LobbyClient を参照すること。
HRESULT EnumRegisteredApplications() { HRESULT hr; DWORD dwSize = 0; DWORD dwPrograms = 0; DWORD iProgram; BYTE* pData = NULL; //g_pLobbyClient は、IDirectPlay8LobbyClient インターフェイスへのポインタ。 //最初は NULL データ バッファ。必要なバッファ サイズは //dwSize.で返される。 hr = g_pLobbyClient->EnumLocalPrograms( NULL, pData, &dwSize, &dwPrograms, 0 ); if( dwSize == 0 ) { //登録済みアプリケーションはない。 } //データ バッファを適切なサイズに設定する。 pData = new BYTE[dwSize]; hr = g_pLobbyClient->EnumLocalPrograms( NULL, pData, &dwSize, &dwPrograms, 0 ) //返されたデータを適切な構造体型にキャストする。 DPL_APPLICATION_INFO* pAppInfo = (DPL_APPLICATION_INFO*) pData; //登録済みアプリケーションの名前を列挙する。 for( iProgram=0; iProgram<dwPrograms; iProgram++ ) { TCHAR strAppName[MAX_PATH]; DXUtil_ConvertWideStringToGeneric( strAppName, pAppInfo->pwszApplicationName ); } SAFE_DELETE_ARRAY( pData ); return S_OK; }
登録済みアプリケーションのアプリケーション GUID は、アプリケーションの起動に必要なので、保存しなければならない。
ロビー クライアントの設計によっては、以下の作業のいくつかを実行する必要がある。