Platform SDK: DirectX

ステップ 7 : DirectDraw オブジェクトの割り当て解除

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic チュートリアル」を参照すること。

[C++]

F12 キーを押すと、DDEx1 アプリケーションは終了前に WM_DESTROY メッセージを処理する。このメッセージは、IUnknown::Release 呼び出しのすべてを含む ReleaseAllObjects サンプル関数を呼び出す。次に例を示す。

static void
ReleaseAllObjects(void)
{
    if (g_pDD != NULL)
    {
        if (g_pDDSPrimary != NULL)
        {
            g_pDDSPrimary->Release();
            g_pDDSPrimary = NULL;
        }
        g_pDD->Release();
        g_pDD = NULL;
    }
}
 

アプリケーションは、DirectDraw オブジェクト (g_pDD) および DirectDrawSurface オブジェクト (g_pDDSPrimary) へのポインタが NULL であるかどうかを調べる。次に、DDEx1 は IDirectDrawSurface7::Release メソッドを呼び出し、DirectDrawSurface オブジェクトの参照カウントを 1 だけ減らす。これにより、参照カウントが 0 になるので、DirectDrawSurface オブジェクトは割り当てを解除される。DirectDrawSurface ポインタの値を NULL に設定することにより、このポインタは破棄される。次に、アプリケーションは IDirectDraw7::Release を呼び出し、DirectDraw オブジェクトの参照カウントを 0 まで減らす。これにより、DirectDraw オブジェクトの割り当てを解除する。このポインタの値を NULL に設定することにより、このポインタも破棄される。