次の方法で共有


IDirect3DSurface9::GetDC

デバイス コンテキストを取得します。

HRESULT 
GetDC(
  HDC* phdc
);

パラメータ

  • phdc
    サーフェスのデバイス コンテキストへのポインター。

戻り値

メソッドが成功した場合は、D3D_OK を返します。引数が無効な場合は、D3DERR_INVALIDCALL が返されます。

解説 

次の制限が適用されます。

  • IDirect3DSurface9::GetDC は、以下のフォーマットでのみ有効です。D3DFMT_R5G6B5、D3DFMT_X1R5G5B5、D3DFMT_R8G8B8、および D3DFMT_X8R8G8B8。GDI の実装の動作がアルファ チャンネル上では明確に定義されていないので、アルファが含まれるフォーマットはサポートされていません。フォーマットの詳細については、「D3DFORMAT」を参照してください。
  • デバイス コンテキストは、サーフェスごとに一度に 1 つしか返すことができません。
  • IDirect3DSurface9::GetDC は、サーフェスがロック済みであると失敗します。サーフェスがミップマップまたはキューブマップのメンバーである場合、他のミップマップまたはキューブマップのメンバーがロックされていると、IDirect3DSurface9::GetDC は失敗します。
  • ロック可能として作成されていないレンダー ターゲット (バック バッファーの場合は D3DPRESENTFLAG_LOCKABLE_BACKBUFFER フラグを使用して作成されていないレンダー ターゲット) に対して、IDirect3DSurface9::GetDC は失敗します。
  • IDirect3DDevice9::CreateOffscreenPlainSurface を使用して作成されていないサーフェスの場合、動的 (D3DUSAGE_DYNAMIC) なレンダー ターゲットでもロック可能なレンダー ターゲットでもない既定のプール (D3DPOOL_DEFAULT) サーフェスに対して、IDirect3DSurface9::GetDC は失敗します。
  • IDirect3DSurface9::GetDC は D3DPOOL_SCRATCH サーフェスに対して失敗します。

サーフェス上にデバイス コンテキストが残っている場合、アプリケーションは以下のメソッドを呼び出せないことがあります。

IDirect3DCubeTexture9 IDirect3DCubeTexture9::LockRect
IDirect3DDevice9 IDirect3DDevice9::ColorFill
IDirect3DDevice9::StretchRect
IDirect3DDevice9::UpdateSurface
IDirect3DDevice9::UpdateTexture
IDirect3DSurface9 IDirect3DSurface9::LockRect
IDirect3DSwapChain9 IDirect3DSwapChain9::Present *
IDirect3DTexture9 IDirect3DTexture9::LockRect

* (サーフェスが含まれるスワップ チェーン上)

IDirect3DSurface9::GetDC が原因で暗黙的なロックが実行されます。後で利用することを目的としてデバイス コンテキストを保持しないでください。デバイス コンテキストを解放するには、IDirect3DSurface9::ReleaseDC を呼び出します。

ミップマップまたはキューブマップのレベルで IDirect3DSurface9::GetDC/IDirect3DSurface9::ReleaseDC を呼び出すことは有効です。ただし、これらの呼び出しは、最上位のレベルを除くすべてのミップレベルに対して遅くなります。また、それらのミップレベルに対する GDI 処理は高速化されません。

hdc を使用すると、Win32 および GDI の機能にアクセスできます。

要件

ヘッダー: D3D9.h 宣言

関連項目

IDirect3DSurface9::ReleaseDC, D3DUSAGE, D3DPOOL, D3DPRESENT_PARAMETERS