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 |