次の方法で共有


DirectInput8Create

DirectInput オブジェクトを作成し、IDirectInput8 インターフェイス またはそれ以降のインターフェイスを返します。

HRESULT 
DirectInput8Create(
  HINSTANCE hinst,
  DWORD dwVersion,
  REFIID riidltf,
  LPVOID * ppvOut,
  LPUNKNOWN punkOuter
);

パラメータ

  • hinst
    DirectInput オブジェクトを作成するアプリケーションまたはダイナミック リンク ライブラリ (DLL) のインスタンス ハンドル。DirectInput は、この値を使用してアプリケーションまたは DLL が認証されているかどうか判別し、後方互換性のために必要な特殊動作があれば設定します。DLL が親アプリケーションのハンドルを渡すとエラーになります。たとえば、DirectInput を使用する Web ページに組み込まれた Microsoft ActiveX コントロールは、ブラウザーのハンドルではなくコントロール自身のインスタンス ハンドルを渡す必要があります。これにより、DirectInput がコントロールを認識でき、必要な特殊動作があればその動作を有効にできます。
  • dwVersion
    アプリケーションが設計された対象の DirectInput のバージョン番号。この値は通常は DIRECTINPUT_VERSION です。アプリケーションが Dinput.h をインクルードする前に DIRECTINPUT_VERSION を定義した場合、この値は 0x0800 より大きくする必要があります。以前のバージョンでは、Dinput.lib 内にある DirectInputCreateEx を使用します。
  • riidltf
    使用するインターフェイスの一意識別子。この値は IID_IDirectInput8A または IID_IDirectInput8W です。IID_IDirectInput8 を渡すと、コンパイル時に UNICODE が定義されたかどうかに応じて、ANSI または Unicode のバージョンのインターフェイスが define によって選択されます。
  • ppvOut
    呼び出しが正常に行われた場合にインターフェイス ポインターを受け取る変数のポインターのアドレス。
  • punkOuter
    COM 集約に使用する制御オブジェクトの IUnknown インターフェイスのアドレスへのポインター、または NULL (インターフェイスを集約しない場合)。呼び出し側アプリケーションのほとんどは NULL を渡します。集約が要求されている場合、ppvOut に返されるオブジェクトは、COM 集約に必要な IUnknown へのポインターです。

戻り値

関数が正常に実行された場合、戻り値は DI_OK です。関数が失敗した場合、戻り値は次のいずれかのエラー値です。DIERR_BETADIRECTINPUTVERSION、DIERR_INVALIDPARAM、DIERR_OLDDIRECTINPUTVERSION、DIERR_OUTOFMEMORY

解説 

この関数によって作成される DirectInput オブジェクトは、Dinput8.dll 内で実装されます。DirectX 8.0 より前のバージョンのインターフェイスは、この実装では取得できません。

CoCreateInstance を使用せず、最新の DirectX SDK を使用して DirectX 8.x インターフェイスを作成するには、次の手順で行います。

  1. Dinput8.h の include ステートメントの前に "#define DIRECTINPUT_VERSION 0x0800" を設定します。
  2. DirectInputCreateEx の代わりに DirectInput8Create を呼び出します。
  3. Dinput.lib の代わりに Dinput8.lib ライブラリにリンクします。

CoCreateInstance を使用せず、DirectX 8.x SDK を使用して DirectX 8.x インターフェイスを作成するには、次の手順で行います。

  1. DirectInputCreateEx の代わりに DirectInput8Create を呼び出します。
  2. Dinput.lib の代わりに Dinput8.lib ライブラリにリンクします。

CoCreateInstance を使用せず、DirectX 8.x または最新の DirectX SDK から DirectX 7.0 インターフェイスを作成するには、次の手順で行います。

  1. dinput.h の include ステートメントの前に "#define DIRECTINPUT_VERSION 0x0700" を設定します。
  2. DirectInput8Create の代わりに DirectInputCreateEx を呼び出します。
  3. Dinput8.lib の代わりに Dinput.lib ライブラリにリンクします。

CoCreateInstance を使用して、DirectX 8.x または最新の DirectX SDK から DirectX 7.0 インターフェイスを作成するには、次の手順で行います。

  1. CoInitializeEx を呼び出します。
  2. CLISID_DirectInput を使用して CoCreateInstance を呼び出します。
  3. IDirectInput7::Initialize を使用して DirectInput オブジェクトを初期化します。

CoCreateInstance を使用して、DirectX 8.x または最新の DirectX SDK から DirectX 8.x または DirectX 9.0 のインターフェイスを作成するには、次の手順で行います。

  1. CoInitializeEx を呼び出します。
  2. CLISID_DirectInput8 を使用して、CoCreateInstance を呼び出します。
  3. IDirectInput8::Initialize を使用して DirectInput オブジェクトを初期化します。

◆次の文節に含まれる◇ pUnkOuter = NULL を指定して関数を呼び出すと、 CoCreateInstance( &CLSID_DirectInput8, punkOuter, CLSCTX_INPROC_SERVER, &IID_IDirectInput8W, lplpDirectInput) によってオブジェクトを作成し、IDirectInput8::Initialize を使用して初期化した場合と同じ結果になります。

◆次の文節に含まれる◇ pUnkOuter != NULL を指定して関数を呼び出すと、 CoCreateInstance( &CLSID_DirectInput8, punkOuter, CLSCTX_INPROC_SERVER, &IID_IUnknown, lplpDirectInput) によってオブジェクトを作成した場合と同じ結果になります。集約オブジェクトは手動で初期化する必要があります。

要件

ヘッダー: Dinput.h 宣言