当前位置: 首页 > 文档资料 > DirectX 中文教程 >

IDirectDrawClipper接口

优质
小牛编辑
139浏览
2023-12-01

IDirectDrawClipper接口

返回上级

      应用程序使用IDirectDrawClipper接口的函数来管理裁剪表。这部分是关于该接口函数的参考。IDirectDraw2接口的函数可以分为以下几组:

      分配内存Initialize
      裁剪表GetClipList
      IsClipListChanged
      SetClipList
      SetHWnd
      窗口句柄GetHWnd

      和所有COM接口一样,IDirectDrawClipper接口由IUnknown接口衍生而来。IUnknown接口支持以下三种方法:

      AddRef
      QueryInterface
      Release

      你可以使用LPDIRECTDRAWCLIPPER数据类型来声明一个指向IDirectDrawClipper接口的指针变量。在Ddraw.h头文件中,用如下代码声明了这种数据类型。

      typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;

    1. IDirectDrawClipper::GetClipList

      回到目录

    2. 获得与一个DirectDrawClipper对象相关联的裁剪表的复件。也可以提供一个矩形来裁剪裁剪表,以获得裁剪表的一个子集。

      HRESULT GetClipList(

      LPRECT lpRect,

      LPRGNDATA lpClipList,

      LPDWORD lpdwSize

      );

      参数:

      lpRect

      一个RECT结构的地址,被用来裁剪裁剪表。该参数可以是NULL,以获得整个裁剪表。

      lpClipList

      一个RGNDATA结构的地址,将获得裁剪表的复件。如果该参数为NULL,则该函数把要容纳整个裁剪表所需要的缓冲区容量值(按字节数)返回给lpdwSize。

      lpdwSize

      裁剪表缓冲区容量的长度值(按字节数)。当lpClipList参数不为NULL,则应赋予该参数lpClipList的缓冲区容量(即lpClipList的长度,按字节数)。当lpClipList为NULL,则该参数将获得要容纳整个裁剪表所需要的缓冲区容量值。

      返回值:

      如果函数调用成功,返回DD_OK。

      如果函数调用失败,返回值可能是下列错误值之一:

      DDERR_GENERIC

      DDERR_INVALIDCLIPLIST

      DDERR_INVALIDOBJECT

      DDERR_INVALIDPARAMS

      DDERR_NOCLIPLIST

      DDERR_REGIONTOOSMALL

      备注:

      该函数使用的RGNDATA结构的定义如下。

      typedef struct _RGNDATA {

      RGNDATAHEADER rdh;

      char Buffer[1];

      } RGNDATA;

      RGNDATA结构的rdh成员是一个RGNDATAHEADER结构,它的定义如下:

      typedef struct _RGNDATAHEADER {

      DWORD dwSize;

      DWORD iType;

      DWORD nCount;

      DWORD nRgnSize;

      RECT rcBound;

      } RGNDATAHEADER;

      要得到更多的关于这些结构的资料,请参阅SDK中的帮助文档。

      快速信息:

      Windows NT:适用于4.0或更新版

      Windows:适用于Windows 95或更新版

      Windows CE:不支持

      头文件:ddraw.h

      库文件:ddraw.lib

      请参阅:

      IDirectDrawClipper::SetClipList

    3. IDirectDrawClipper::GetHWnd
    4. 获得由先前调用IDirectDrawClipper::SetHWnd函数与该DirectDrawClipper对象关联上的窗口的句柄。

      HRESULT GetHWnd(

      HWND FAR *lphWnd

      );

      参数:

      lphWnd

      窗口句柄的地址,该窗口是由先前调用IDirectDrawClipper::SetHWnd函数与该DirectDrawClipper对象关联上的。

      返回值:

      如果函数调用成功,返回DD_OK。

      如果函数调用失败,返回值可能是下列错误值之一:

      DDERR_INVALIDOBJECT

      DDERR_INVALIDPARAMS

      快速信息:

      Windows NT:适用于4.0或更新版

      Windows:适用于Windows 95或更新版

      Windows CE:不支持

      头文件:ddraw.h

      库文件:ddraw.lib

      请参阅:

      IDirectDrawClipper::SetHWnd

    5. IDirectDrawClipper::Initialize

      回到目录

    6. 初始化一个DirectDrawClipper对象,该对象是由调用CoCreateInstance COM函数创建的。

      HRESULT Initialize(

      LPDIRECTDRAW lpDD,

      DWORD dwFlags

      );

      参数:

      lpDD

      一个DirectDraw结构的地址,代表DirectDraw对象。如果该参数设为NULL,将创建一个独立的DirectDrawClipper对象(该对象同样可以调用DirectDrawClipper接口的函数)。

      dwFlags

      该参数尚未使用,只能设为0。

      返回值:

      如果函数调用成功,返回DD_OK。

      如果函数调用失败,返回值可能是下列错误值之一:

      DDERR_ALREADYINITIALIZED

      DDERR_INVALIDPARAMS

      提供这个函数是为了与部件对象模型(COM)的协议保持一致性。如果已经调用DirectDrawCreateClipper或IDirectDraw2::CreateClipper创建了该DirectDrawClipper对象,该函数将返回DDERR_ALREADYINITIALIZED。

      备注:

      要得到更多关于如何与CoCreateInstance 一起使用IDirectDrawClipper::Initialize的资料,请参阅“用CoCreateInstance创建DirectDrawClipper对象”。

      快速信息:

      Windows NT:适用于4.0或更新版

      Windows:适用于Windows 95或更新版

      Windows CE:不支持

      头文件:ddraw.h

      库文件:ddraw.lib

      请参阅:

      IUnknown::AddRef, IUnknown::QueryInterface, IUnknown::Release, IDirectDraw2::CreateClipper

    7. IDirectDrawClipper::IsClipListChanged

      回到目录

    8. 如果一个窗口句柄与DirectDrawClipper对象关联上,该函数用来监控裁剪表的状态。

      HRESULT IsClipListChanged(

      BOOL FAR *lpbChanged

      );

      参数:

      lpbChanged

      一个BOOL变量的地址,如果裁剪表已经改变,则返回TRUE。

      返回值:

      如果函数调用成功,返回DD_OK。

      如果函数调用失败,返回值可能是下列错误值之一:

      DDERR_INVALIDOBJECT

      DDERR_INVALIDPARAMS

      快速信息:

      Windows NT:适用于4.0或更新版

      Windows:适用于Windows 95或更新版

      Windows CE:不支持

      头文件:ddraw.h

      库文件:ddraw.lib

    9. IDirectDrawClipper::SetClipList

      回到目录

    10. 设置或删除与DirectDrawClipper对象相关联的裁剪表,该裁剪表被用于页面的IDirectDrawSurface3::Blt,IDirectDrawSurface3::BltBatch,和IDirectDrawSurface3::UpdateOverlay操作。

      HRESULT SetClipList(

      LPRGNDATA lpClipList,

      DWORD dwFlags

      );

      参数:

      lpClipList

      一个合法的RGNDATA结构的地址或NULL。如果已经存在一个裁剪表与DirectDrawClipper对象相关联并且该参数被设为NULL,则裁剪表被删除。

      dwFlags

      该参数尚未使用,必须设为0。

      返回值:

      如果函数调用成功,返回DD_OK。

      如果函数调用失败,返回值可能是下列错误值之一:

      DDERR_CLIPPERISUSINGHWND

      DDERR_INVALIDCLIPLIST

      DDERR_INVALIDOBJECT

      DDERR_INVALIDPARAMS

      DDERR_OUTOFMEMORY

      备注:

      如果已经有一个窗口句柄与DirectDrawClipper对象相关联,裁剪表将不能被设置。应注意的是:IDirectDrawSurface3::BltFast函数不支持裁剪。

      该函数使用的RGNDATA结构的定义如下。

      typedef struct _RGNDATA {

      RGNDATAHEADER rdh;

      char Buffer[1];

      } RGNDATA;

      RGNDATA结构的rdh成员是一个RGNDATAHEADER结构,它的定义如下:

      typedef struct _RGNDATAHEADER {

      DWORD dwSize;

      DWORD iType;

      DWORD nCount;

      DWORD nRgnSize;

      RECT rcBound;

      } RGNDATAHEADER;

      要得到更多的关于这些结构的资料,请参阅SDK中的帮助文档。

      快速信息:

      Windows NT:适用于4.0或更新版

      Windows:适用于Windows 95或更新版

      Windows CE:不支持

      头文件:ddraw.h

      库文件:ddraw.lib

      请参阅:

      IDirectDrawClipper::GetClipList,IDirectDrawSurface3::Blt,IDirectDrawSurface3::BltFast,IDirectDrawSurface3::BltBatch,IDirectDrawSurface3::UpdateOverlay

    11. IDirectDrawClipper::SetHWnd

      回到目录

将一个窗口的客户区与裁剪表关联上。

HRESULT SetHWnd(

DWORD dwFlags,

HWND hWnd

);

 

参数:

dwFlags

该参数尚未使用,只能设为0。

hWnd

包含了裁剪信息的窗口句柄。

 

返回值:

如果函数调用成功,返回DD_OK。

如果函数调用失败,返回值可能是下列错误值之一:

DDERR_INVALIDCLIPLIST

DDERR_INVALIDOBJECT

DDERR_INVALIDPARAMS

DDERR_OUTOFMEMORY

快速信息:

Windows NT:适用于4.0或更新版

Windows:适用于Windows 95或更新版

Windows CE:不支持

头文件:ddraw.h

库文件:ddraw.lib

请参阅:

IDirectDrawClipper::GetHWnd