IDirectInputDevice8::SetActionMap メソッド

IDirectInputDevice8::SetActionMap メソッド

デバイスのデータ形式を設定し、アプリケーション定義のアクションをデバイス オブジェクトにマップする。バッファリング データのバッファ サイズも設定する。

構文

HRESULT SetActionMap(      
    LPCDIACTIONFORMAT lpdiActionFormat,
    LPCTSTR lptszUserName,
    DWORD dwFlags
);

パラメータ

  • lpdiActionFormat
    適用するアクション マップに関する情報を格納する DIACTIONFORMAT 構造体のアドレス。
  • lptszUserName
    どのユーザーのアクション マップを設定しているかについて、ユーザー名を指定する Unicode 文字列。NULL を指定すると、現在システムにログインしているユーザーを表す。
  • dwFlags
    アクション マップの適用方法を指定する DWORD 値。次のいずれかの値を指定できる。
    • DIDSAM_DEFAULT
      このユーザーのアクション マップを設定する。マップが現在のマップと異なる場合、新しい設定がディスクに保存される。
    • DIDSAM_FORCESAVE
      常に構成をディスクに保存する。
    • DIDSAM_NOUSER
      デフォルトの構成プロパティ シートでこのデバイスのユーザー所有権をリセットする。ユーザー所有権をリセットしても、現在のアクション マップは削除されない。

戻り値

成功した場合は、DI_OK、DI_SETTINGSNOTSAVED または DI_WRITEPROTECT を返す。

失敗した場合は、エラー値 DIERR_ACQUIRED または DIERR_INVALIDPARAM を返す。

DI_OK 操作は完全に終了した。この値は、コンポーネント オブジェクト モデル (COM) の標準の戻り値である S_OK に等しい。
DI_SETTINGSNOTSAVED アクション マップはデバイスに適用されたが、設定情報は保存されなかった。
DI_WRITEPROTECT 設定が変更できないことを示す成功コード。
DIERR_ACQUIRED 操作は、デバイスが取得状態の間は実行できない。
DIERR_INVALIDPARAM 無効なパラメータが、戻ってくる関数に渡されたか、オブジェクトがその関数を呼び出せる状態になかった。この値は、標準の COM 戻り値である E_INVALIDARG に等しい。

注意

このメソッドにより、アクションとコントロールのマッピングをデバイスのデフォルトから変更できるメカニズムが得られる。アプリケーションは、このメソッドを使ってゲーム内のアクションを仮想コントロールにマップする必要がある。

このメソッドに渡されるユーザー名により、デバイスのアクション マップのセットが特定ユーザーにバインドされる。設定が現在適用されているマップと異なる場合は、自動的にディスクに保存される。複数のユーザーから入力を受け付けるアプリケーションは、各ユーザーのアクション マップが競合する可能性があるので、システムのマウスやキーボードにアクション マップを適用する際は注意が必要である。

このメソッドは、デバイスが取得されていない場合にのみ呼び出すことができる。

IDirectInputDevice8::BuildActionMap が成功しても、いずれのアクションもマップされない場合は、その後 IDirectInputDevice8::SetActionMap を呼び出すと DI_OK が返るが、IDirectInputDevice8::Acquire を呼び出すと失敗し、DIERR_INVALIDPARAM が返る。

参照

IDirectInputDevice8::BuildActionMap