IDirectDrawSurface7::SetPrivateData 方法 (ddraw.h)

将数据与应用程序(而不是 DirectDraw)要使用的图面相关联。 数据按值传递,多个数据集可以与单个图面相关联。

语法

HRESULT SetPrivateData(
  [in] REFGUID unnamedParam1,
  [in] LPVOID  unnamedParam2,
  [in] DWORD   unnamedParam3,
  [in] DWORD   unnamedParam4
);

参数

[in] unnamedParam1

对 (C++) 或 (C 地址的引用) 标识要设置的私有数据的全局唯一标识符。

[in] unnamedParam2

指向缓冲区的指针,该缓冲区包含要与图面关联的数据。

[in] unnamedParam3

lpData 处缓冲区的大小值(以字节为单位)。

[in] unnamedParam4

一个值,可设置为以下标志之一。 这些标志描述正在传递的数据类型,或请求在表面更改时使数据失效。

(无)

如果未指定任何标志,DirectDraw 会分配内存来保存缓冲区中的数据,并将数据复制到新缓冲区。 DirectDraw 分配的缓冲区会根据需要自动释放。

DDSPD_IUNKNOWNPOINTER

lpData 中的数据是指向 IUnknown 接口的指针。 DirectDraw 自动调用此接口的 IUnknown::AddRef 方法。 当不再需要此数据时,DirectDraw 会自动调用此接口的 IUnknown::Release 方法。

DDSPD_VOLATILE

仅当表面保持不变时, lpData 上的缓冲区才有效。 如果图面的内容发生更改,对 IDirectDrawSurface7::GetPrivateData 方法的后续调用将返回DDERR_EXPIRED。

返回值

如果方法成功,则返回值DD_OK。

如果失败,方法可能会返回以下错误值之一:

  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_OUTOFMEMORY

注解

DirectDraw 不管理 lpData 上的内存。 如果此缓冲区是动态分配的,则调用方必须释放内存。

要求

要求
目标平台 Windows
标头 ddraw.h
Library Ddraw.lib
DLL Ddraw.dll

另请参阅

IDirectDrawSurface7