Platform SDK: DirectX |
ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic チュートリアル」を参照すること。
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 に設定することにより、このポインタも破棄される。