Microsoft DirectX 8.0

IDirectDrawFactory インターフェイス

注 :  このインターフェイスの使用は避けること。新しいアプリケーションで使用してはならない。

IDirectDrawFactory インターフェイスは、拡張機能をサポートする DirectDraw オブジェクトを作成および列挙するために使用される。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IDirectDrawFactory メソッド説明
CreateDirectDraw DirectDraw オブジェクトを作成し、IUnknown インターフェイスと IDirectDraw インターフェイスへのポインタを取得する。
DirectDrawEnumerate システムにインストールされている DirectDraw サーフェスを列挙する。

IDirectDrawFactory::CreateDirectDraw

IDirectDrawFactory インターフェイス

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 インターフェイスへのポインタのアドレスを取得できる。

IDirectDrawFactory::DirectDrawEnumerate

IDirectDrawFactory インターフェイス

システム内の利用可能な DirectDraw 互換デバイスを列挙する。

構文

STDMETHOD DirectDrawEnumerate(
    LPDDENUMCALLBACK lpCallback,
    LPVOID lpContext
) PURE;

パラメータ

lpCallback
[in] システム内の DirectDrawEx で有効なハードウェア アブストラクション レイヤ (HAL) それぞれの記述で呼び出される DDEnumCallback 関数へのポインタ。
lpContext
[in] 関数を呼び出すたびにコールバック関数に渡されるアプリケーション定義構造体のアドレス。

戻り値

失敗した場合は、DD_OKを返す。それ以外の場合は、DDERR_INVALIDPARAMS を返す。

注意

このメソッドは、DirectX SDK で定義されている DirectDrawDirectDrawEnumerate 関数に似た役割をする。