IDirect3DSurface9::GetDC 方法 (d3d9helper.h)

检索设备上下文。

语法

HRESULT GetDC(
  [out] HDC *phdc
);

参数

[out] phdc

类型: HDC*

指向图面的设备上下文的指针。

返回值

类型: HRESULT

如果该方法成功,则返回值D3D_OK。 如果参数无效,则返回D3DERR_INVALIDCALL。

注解

以下限制适用。

  • IDirect3DSurface9::GetDC 仅对以下格式有效:D3DFMT_R5G6B5、D3DFMT_X1R5G5B5、D3DFMT_R8G8B8和D3DFMT_X8R8G8B8。 不支持包含 Alpha 的格式,因为 GDI 实现在 alpha 通道上没有明确定义的行为。 有关格式的详细信息,请参阅 D3DFORMAT
  • 每个图面一次只能返回一个设备上下文。
  • 如果图面已锁定,IDirect3DSurface9::GetDC 将失败。 如果图面是 mipmap 或 cubemap 的成员,则如果锁定任何其他 mipmap 或 cubemap 成员, IDirect3DSurface9::GetDC 将失败。
  • IDirect3DSurface9::GetDC 在呈现器目标上失败,除非它们是在可锁定 (创建的,或者对于后台缓冲区,) D3DPRESENTFLAG_LOCKABLE_BACKBUFFER标志。
  • 对于未使用 IDirect3DDevice9::CreateOffscreenPlainSurface 创建的图面, IDirect3DSurface9::GetDC 将在默认池 (D3DPOOL_DEFAULT) 图面上失败,除非它们是动态 (D3DUSAGE_DYNAMIC) 或可锁定的呈现目标。
  • IDirect3DSurface9::GetDC 将在D3DPOOL_SCRATCH图面上失败。
当设备上下文在图面上未完成时,应用程序可能不会调用以下方法:
IDirect3DCubeTexture9 IDirect3DCubeTexture9::LockRect
IDirect3DDevice9 IDirect3DDevice9::ColorFill
IDirect3DDevice9::StretchRect
IDirect3DDevice9::UpdateSurface
IDirect3DDevice9::UpdateTexture
IDirect3DSurface9 IDirect3DSurface9::LockRect
IDirect3DSwapChain9 IDirect3DSwapChain9::P resent *
IDirect3DTexture9 IDirect3DTexture9::LockRect
 
  • 在包含图面) 的交换链上 (

IDirect3DSurface9::GetDC 导致隐式锁;不要保留设备上下文供以后使用。 调用 IDirect3DSurface9::ReleaseDC 将其释放。

在 mipmap 或 cubemap 的级别上调用 IDirect3DSurface9::GetDC/IDirect3DSurface9::ReleaseDC 是有效的,但是,这些调用对于除最顶层以外的所有错误级别都较慢,并且不会加速对这些 miplevel 的 GDI 操作。

hdc 提供对 Win32 和 GDI 功能的访问权限。

要求

要求
目标平台 Windows
标头 d3d9helper.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

D3DPOOL

D3DPRESENT_PARAMETERS

D3DUSAGE

IDirect3DSurface9

IDirect3DSurface9::ReleaseDC