Platform SDK: DirectX

CoCreateInstance を用いた DirectDraw オブジェクトの作成

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。

[C++]

DirectDrawCreate 関数ではなく、CoCreateInstance 関数と IDirectDraw7::Initialize メソッドを使って DirectDraw オブジェクトを作成することができる。以下に DirectDraw オブジェクトを使用する手順を示す。

  1. アプリケーションの開始時に NULL を指定して CoInitialize を呼び出し、COM を初期化する。
    if (FAILED(CoInitialize(NULL)))
        return FALSE;
    
  2. CoCreateInstance IDirectDraw7::Initialize メソッドを使って DirectDraw オブジェクトを作成する。
    ddrval = CoCreateInstance(&CLSID_DirectDraw,
        NULL, CLSCTX_ALL, &IID_IDirectDraw7, &lpdd);
    if(!FAILED(ddrval))
        ddrval = IDirectDraw7_Initialize(lpdd, NULL);
    

    この CoCreateInstance の呼び出しでは、最初のパラメータ CLSID_DirectDraw が、DirectDraw ドライバ オブジェクトクラスの識別子である。IID_IDirectDraw7 パラメータは、作成する特定の DirectDraw インターフェイスを識別する。また、lpdd パラメータは取得された DirectDraw オブジェクトへのポインタである。呼び出しが成功すると、この関数は初期化されていないオブジェクトを返す。

  3. DirectDraw オブジェクトを使う前に、IDirectDraw7::Initialize を呼び出さなくてはならない。このメソッドは、DirectDrawCreate 関数が一般的に使うドライバ GUID パラメータ (この場合 NULL) を取得する。DirectDraw オブジェクトの初期化後は、DirectDrawCreate 関数を使って作成した場合と同様に使用および解放することができる。DirectDraw オブジェクトに関連付けられたメソッドの 1 つを使う前に、初期化メソッドを呼び出さないと、DDERR_NOTINITIALIZED エラーが発生する。

アプリケーションを終了する前に、CoUninitialize 関数で COM ライブラリを閉じること。

CoUninitialize () ;