DirectInput8Create 関数
DirectInput8Create 関数
Microsoft® DirectInput® オブジェクトを作成し、IDirectInput8 またはそれ以降のインターフェイスを返す。
構文
HRESULT WINAPI DirectInput8Create(
HINSTANCE hinst,
DWORD dwVersion,
REFIID riidltf,
LPVOID *ppvOut,
LPUNKNOWN punkOuter
);
パラメータ
hinst
DirectInput オブジェクトを作成するアプリケーションまたは DLL のインスタンス ハンドル。DirectInput は、この値を使って、アプリケーションまたは DLL が認定されているかどうかを判断すると共に、下位互換性のために必要な動作を確立する。DLL が親のアプリケーションのハンドルを渡すとエラーとなる。たとえば、Web ページに埋め込まれていて DirectInput を使う Microsoft ActiveX® コントロールは、Web ブラウザのハンドルではなく、それ自身のインスタンスのハンドルを渡さなければならない。これにより、DirectInput がそのコントロールを認識し、必要と思われる特別な動作をすべて有効にすることが確実になる。
dwVersion
アプリケーションの設計対象である DirectInput のバージョン番号。この値は通常、DIRECTINPUT_VERSION である。Dinput.h ファイルをインクルードする前にアプリケーションが DIRECTINPUT_VERSION を定義する場合、その値は 0x0800 以上でなければならない。以前のバージョンでは DirectInputCreateEx を使う。これは Dinput.lib に定義されている。riidltf
目的のインターフェイスの一意の識別子。この値は IID_IDirectInput8A または IID_IDirectInput8W である。IID_IDirectInput8 定義を渡すことにより、コンパイル時に UNICODE が定義されているかどうかにより、Unicode バージョンまたは ANSI バージョンのインターフェイスが選択される。ppvOut
呼び出しが成功した場合にインターフェイス ポインタを受け取る変数へのポインタのアドレス。punkOuter
コンポーネント オブジェクト モデル (COM) 集成に対する制御オブジェクトの IUnknown インターフェイスのアドレスへのポインタ。インターフェイスが集成されていない場合には NULL。通常、呼び出し側は NULL を渡す。集成が要求された場合、ppvOut に返されるオブジェクトは、COM 集成が要求するように、IUnknown へのポインタである。
戻り値
成功した場合は、DI_OK を返す。
失敗した場合は、次のエラー値のいずれかを返す。
DIERR_BETADIRECTINPUTVERSION | アプリケーションは、DirectInput のサポートされていないリリース前のバージョン用に作成されたものである。 |
DIERR_INVALIDPARAM | 無効なパラメータが戻ってくる関数に渡されたか、オブジェクトがその関数を呼び出せる状態になかった。この値は、標準の COM 戻り値である E_INVALIDARG に等しい。 |
DIERR_OLDDIRECTINPUTVERSION | アプリケーションは、より新しいバージョンの DirectInput を必要とする。 |
DIERR_OUTOFMEMORY | DirectInput サブシステムが呼び出しを完了するのに十分なメモリを割り当てることができなかった。この値は、標準の COM 戻り値である E_OUTOFMEMORY に等しい。 |
注意
この関数が作成する DirectInput オブジェクトは、Dinput8.dll に実装される。この実装では、Microsoft DirectX® 8.0 より前のバージョンのインターフェイスを取得できない。
CoCreateInstance を使わずに、DirectX 9.0 ソフトウェア開発キット (SDK) で DirectX 8.x インターフェイスを作成するには :
- Dinput8.h のインクルード文の前に "#define DIRECTINPUT_VERSION 0x0800" を設定する。
- DirectInputCreateEx の代わりに DirectInput8Create を呼び出す。
- Dinput.lib の代わりに Dinput8.lib ライブラリにリンクする。
CoCreateInstance を使わずに、DirectX 8.x SDK で Direct X 8.x インターフェイスを作成するには :
- DirectInputCreateEx の代わりに DirectInput8Create を呼び出す。
- Dinput.lib の代わりに Dinput8.lib ライブラリにリンクする。
CoCreateInstance を使わずに、DirectX 8.x または DirectX 9.0 SDK で Direct X 7.0 インターフェイスを作成するには :
- dinput.h のインクルード文の前に "#define DIRECTINPUT_VERSION 0x0700" を設定する。
- DirectInput8Create の代わりに DirectInputCreateEx を呼び出す。
- Dinput8.lib の代わりに Dinput.lib ライブラリにリンクする。
CoCreateInstance を使わずに、DirectX 8.x または DirectX 9.0 SDK で Direct X 7.0 インターフェイスを作成するには :
- CoInitializeEx を呼び出す。
- CLISID_DirectInput を使って CoCreateInstance を呼び出す。
- IDirectInput7::Initialize を使って DirectInput オブジェクトを初期化する。
CoCreateInstance を使って、DirectX 8.x または DirectX 9.0 SDK で DirectX 8.x または DirectX 9.0 インターフェイスを作成するには :
- CoInitializeEx を呼び出す。
- CLISID_DirectInput8 を使って CoCreateInstance を呼び出す。
- 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 |
インポート ライブラリ | dinput8.lib |
最低限のオペレーティング システム | Windows 98 |