次の方法で共有


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
      このデバイス、または他の構成済みデバイスに割り当てられた現在のマッピングを保存します。

戻り値

メソッドが正常に実行された場合、戻り値は 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