Microsoft DirectX 8.0 |
注 : このインターフェイスの使用は避けること。新しいアプリケーションで使用してはならない。
IDirectDrawFactory インターフェイスは、拡張機能をサポートする DirectDraw オブジェクトを作成および列挙するために使用される。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IDirectDrawFactory メソッド 説明 CreateDirectDraw DirectDraw オブジェクトを作成し、IUnknown インターフェイスと IDirectDraw インターフェイスへのポインタを取得する。 DirectDrawEnumerate システムにインストールされている DirectDraw サーフェスを列挙する。
DirectDraw オブジェクトを作成し、その IDirectDraw インターフェイスへのポインタを取得する。
構文
STDMETHOD CreateDirectDraw( GUID *pGUID, HWND hWnd, DWORD dwCoopLevelFlags, DWORD dwReserved, IUnknown *pUnkOuter, IDirectDraw **ppDirectDraw ) PURE;
パラメータ
- pGUID
- [out] 作成するドライバを表すグローバル ユニーク識別子 (GUID) へのポインタ。アクティブなディスプレイ ドライバを指定するには、NULL を設定する。また、デバッグのためにアクティブなディスプレイ ドライバの動作を制限するには、次のフラグの 1 つを渡す。
DDCREATE_EMULATIONONLY すべての機能を DirectDraw オブジェクトでエミュレートする。ハードウェアがサポートする機能は利用しない。 DDCREATE_HARDWAREONLY ハードウェアがサポートしない機能を DirectDraw オブジェクトでエミュレートしない。サポートされていない機能が必要なメソッドを呼び出すと、失敗し、DDERR_UNSUPPORTED (操作がサポートされていない) が返される。 - hWnd
- [in] アプリケーションのウィンドウ ハンドル。
- dwCoopLevelFlags
- [in] アプリケーションの最上位動作。以下のフラグを 1 つ以上指定する。
DDSCL_ALLOWMODEX モード X ディスプレイ モードを使用可能にする。このフラグは、DDSCL_EXCLUSIVE フラグおよび DDSCL_FULLSCREEN フラグと共に使用しなければならない。 DDSCL_ALLOWREBOOT アプリケーションがフルスクリーン モードかつ排他モードのときに、ユーザーが Ctrl + Alt + Del キーを押して再起動できるようにする。 DDSCL_EXCLUSIVE 排他レベルを要求する。このフラグは、DDSCL_FULLSCREEN フラグと共に使用しなければならない。フルスクリーンかつ排他協調レベルでは、ハードウェアを最大限利用できる。このモードでは、カスタム パレットや動的パレットの設定、ディスプレイ解像度の変更、メモリの圧縮、およびページ フリッピングの実現ができる。排他 (フルスクリーン) モードでは、ほかのアプリケーションから、サーフェスを割り当てることもできるし、DirectDraw や GDI を使用することもできる。ただし、排他モードでは、そのとき排他アクセスを持っているアプリケーション以外のアプリケーションから、ディスプレイ モードやパレットを変更できない。 DDSCL_FULLSCREEN 排他モードの所有者がプライマリ サーフェス全体を制御することを示す。このフラグは、DDSCL_EXCLUSIVE フラグと共に使用しなければならない。 DDSCL_NORMAL アプリケーションが通常の Microsoft® Windows® アプリケーションとして動作することを示す。このフラグを DDSCL_ALLOWMODEX、DDSCL_EXCLUSIVE、または DDSCL_FULLSCREEN フラグと共に使用することはできない。 DDSCL_NOWINDOWCHANGES アプリケーションがアクティブになったときに、DirectDraw がアプリケーション ウィンドウを最小化または復元できないことを示す。 - dwReserved
- [in] 将来の使用に備えて予約されている。NULL でなければならない。
- pUnkOuter
- [in] NULL でなければならない。将来の COM 集約機能との互換性のために用意されている。現時点では、このパラメータが NULL でない場合、CreateDirectDraw はエラーを返す。
- ppDirectDraw
- [out] IDirectDraw インターフェイスへのポインタのアドレス。
戻り値
成功した場合は、DD_OK を返す。それ以外の場合は、次のいずれかのエラー値を返す。
E_OUTOFMEMORY メモリ不足のため、DirectDraw オブジェクトを作成できない。 DDERR_GENERIC 未定義のエラー状態である。 DDERR_UNSUPPORTED 処理が DirectDraw でサポートされていない。 DDERR_DIRECTDRAWALREADYCREATED このドライバを表す DirectDrawEx オブジェクトが、このプロセスで既に作成されていることを表す。 DDERR_INVALIDDIRECTDRAWGUID このメソッドに渡された GUID が、DirectDrawEx ドライバの有効な識別子でない。 DDERR_INVALIDPARAMS メソッドに渡された 1 つ以上のパラメータが不正である。 DDERR_NODIRECTDRAWHW ハードウェア専用 DirectDrawEx オブジェクトを作成できない。ドライバはハードウェアをサポートしない。
注意
このメソッドは、DirectDraw の DirectDrawCreate 関数を使用して DirectDraw オブジェクトを作成するのと同じ方法で、DirectDraw オブジェクトを作成する。さらに、IDirectDraw2::SetCooperativeLevel メソッドが協調レベルを設定するのと同じ方法で、協調レベルを設定する。ただし、IDirectDrawFactory::CreateDirectDraw メソッドの呼び出しが成功すると、DirectDraw オブジェクトが作成されるだけでなく、DirectDraw オブジェクトが公開する IUnknown インターフェイスと IDirectDraw インターフェイスへのポインタが得られる。現在では、アプリケーションから DirectDraw オブジェクトに照会することによって、IDirectDraw3 インターフェイスへのポインタのアドレスを取得できる。
システム内の利用可能な DirectDraw 互換デバイスを列挙する。
構文
STDMETHOD DirectDrawEnumerate( LPDDENUMCALLBACK lpCallback, LPVOID lpContext ) PURE;
パラメータ
- lpCallback
- [in] システム内の DirectDrawEx で有効なハードウェア アブストラクション レイヤ (HAL) それぞれの記述で呼び出される DDEnumCallback 関数へのポインタ。
- lpContext
- [in] 関数を呼び出すたびにコールバック関数に渡されるアプリケーション定義構造体のアドレス。
戻り値
失敗した場合は、DD_OKを返す。それ以外の場合は、DDERR_INVALIDPARAMS を返す。
注意
このメソッドは、DirectX SDK で定義されている DirectDraw の DirectDrawEnumerate 関数に似た役割をする。