IDirectInputDevice8::BuildActionMap
デバイスのアクション マップを作成し、その情報を取得します。
HRESULT
BuildActionMap(
LPDIACTIONFORMAT lpdiaf,
LPCTSTR lpszUserName,
DWORD dwFlags
);
パラメータ
- lpdiaf
アクション マップに関する情報を受け取る DIACTIONFORMAT 構造体のアドレス。 - lpszUserName
マッピングを要求する対象のユーザー名を指定する文字列へのポインター。ANSI コンパイラー設定を使用する場合は、NULL を渡すと DirectInput は現在のユーザー名を想定します。Unicode コンパイラー設定を使用する場合は、マッピングが保存されなくなるので NULL を渡さないでください。 - dwFlags
マッピングを制御するフラグ。これには次の値のいずれかを指定します。- DIDBAM_DEFAULT
アプリケーション指定のマッピング、つまり DIACTION 構造体に DIA_APPMAPPED フラグを指定したマッピングを除く、すべてのマッピングを上書きします。 - DIDBAM_HWDEFAULTS
アプリケーション指定のマッピングを含めて、すべてのマッピングを上書きします。このフラグは DIDBAM_INITIALIZE と同様ですが、ユーザーによってマッピングが指定されたアクションが、デバイス ドライバーまたは DirectInput に指定されたデフォルトによって自動的に上書きされます。 - DIDBAM_INITIALIZE
アプリケーション指定のマッピングを含めて、すべてのマッピングを上書きします。 - DIDBAM_PRESERVE
このデバイス、または他の構成済みデバイスに割り当てられた現在のマッピングを保存します。
- DIDBAM_DEFAULT
戻り値
メソッドが正常に実行された場合、戻り値は DI_OK、DI_NOEFFECT、または DI_WRITEPROTECT> です。「解説」を参照してください。メソッドが失敗した場合、戻り値は次のいずれかのエラー値です。DIERR_INVALIDPARAM、DIERR_MAPFILEFAIL
解説
このデバイスに対してマッピングが作成されていない場合、メソッドは DI_NOEFFECT を返します。たとえば、キーボードまたはマウスがジャンル固有のアクションに対してマッピングを提供していない場合です。
DIERR_INVALIDPARAM が返された場合は、マッピングのうち 1 つ以上が無効でした。非同期 DIACTION 構造体の dwHow メンバーが DIAH_ERROR に設定されます。アプリケーションはアクション マップを繰り返し処理してエラーを検出し、修正できます。
DIEFF_MAPFILEFAIL が返された場合は、デバイス用のベンダー提供ファイルの読み取り中、またはデバイス用のユーザー構成ファイルの読み取りまたは書き込み中に、エラーが発生しました。
マッピングが構成可能でなければ、DI_WRITEPROTECT> が返されます。たとえば、音声コントローラーのボタンは再構成できません。これは、それぞれのボタンによって特定のハードウェア アクションが発生するためです。DI_WRITEPROTECT> は他の成功コードを上書きするので、戻りコードをチェックしてもアクションがマップされたかどうか判別できません。
IDirectInputDevice8::BuildActionMap が正常に実行されても、アクションがマップされていない場合、IDirectInputDevice8::SetActionMap の後続の呼び出しからは DI_OK が返されますが、IDirectInputDevice8 インターフェイス の呼び出しは失敗して DIERR_INVALIDPARAM が返されます。
要件
ヘッダー: Dinput.h 宣言
関連項目
IDirectInputDevice8::SetActionMap, IDirectInputDevice8::SetDataFormat