Platform SDK: DirectX

IDirectDrawSurface7::DeleteAttachedSurface

IDirectDrawSurface7::DeleteAttachedSurface メソッドは、2 つのサーフェス間のアタッチを解除する。

HRESULT DeleteAttachedSurface(
  DWORD dwFlags,                             
  LPDIRECTDRAWSURFACE7 lpDDSAttachedSurface  
);

パラメータ

dwFlags
現時点では未使用なので 0 に設定しておく。
lpDDSAttachedSurface
アタッチを解除する DirectDrawSurface オブジェクトの IDirectDrawSurface7 インターフェイスのアドレス。このパラメータが NULL の場合、アタッチされたすべてのサーフェスのアタッチが解除される。

戻り値

成功すれば、DD_OK を返す。

失敗すれば、以下のエラー値のいずれかを返す。

DDERR_CANNOTDETACHSURFACE
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_SURFACELOST
DDERR_SURFACENOTATTACHED

注意

このメソッドは、アタッチを解除するサーフェスの参照カウントをデクリメントする。アタッチを解除するサーフェスの参照カウントがゼロになると、そのサーフェスは消失し、メモリから削除される。

IDirectDrawSurface7::AddAttachedSurface メソッドではなく、DirectDraw によって形成される暗黙的なアタッチは解除できない。フリッピング チェーンからサーフェスのアタッチを解除すると、チェーン中の他のサーフェスを変更する可能性がある。フリッピング チェーンからフロント バッファのアタッチを解除すると、チェーンの中の次のサーフェスがフロント バッファとなり、その次のサーフェスがバック バッファとなる。チェーンからバック バッファのアタッチを解除する場合、次のサーフェスがバック バッファとなる。チェーンからプレーン サーフェスのアタッチを解除する場合、そのチェーンが単に短くなる。フリッピング チェーンに 2 つサーフェスがあるだけで、それらのアタッチを解除する場合、そのチェーンは破棄されて、両サーフェスは元の転送先に戻る。

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 98 が必要。
  ヘッダー : ddraw.h で宣言。

参照

IDirectDrawSurface7::Flip