MzDDrawOverlay类参考

对DirectDraw的Overlay的封装 更多...

#include <MzDDrawOverlay.h>

所有成员的列表。

公有成员

HDC BeginDraw ()
 获得Overlay对应的HDC
void Clear ()
 将内部分配的资源释放,释放后,需要重新调用Init,否则Overlay不可用
void EndDraw (bool flip=true)
 画图结束解除对Overlay的锁定
void Flip ()
 如果在Init中指定了使用后备缓冲,将后备缓冲显示出来
BOOL GetExtendedProperty_MzDDrawOverlay (int nPropertyType, void *pValue, int nBufSize)
 获取或设置对象的扩展属性值
POINT GetPosition ()
 获得Overlay当前左上角位置
void HideOverlay ()
 隐藏Overlay
bool Init (HWND hWnd, int x, int y, int width, int height, COLORREF colorKey, BYTE foreAlpha, BYTE backAlpha, bool needBackBuffer, OverlayPixelFormat pixFmt=PixFmtRGB565)
 创建并初始化一个DirectDraw的Overlay表面
bool IsVisible ()
 Overlay是否可见,可见状态下透明度可能为0.
bool LockData (DDSURFACEDESC *pDDSD)
 获得Overlay当前的各项参数
 MzDDrawOverlay ()
 构造函数,在没有调用Init之前,不会实际创建Overlay
BOOL SetExtendedProperty_MzDDrawOverlay (int nPropertyType, void *pValue, int nBufSize)
 获取或设置对象的扩展属性值
void SetPosition (int x, int y)
 设置Overlay当前左上角位置,如果设置位置后,Overlay有区域超出屏幕范围,会导致设置失败或者图像不正确,对于Init调用也是这样
void SetTransparency (int iValue=15)
 可动态设置前景区域的透明度
void ShowOverlay ()
 显示Overlay
bool UnLockData (bool flip=true)
 画图结束解除对Overlay的锁定
 ~MzDDrawOverlay ()
 析构函数,自行释放有关的资源

保护成员

void RestoreAllSurfaces ()

保护属性

HDC m_dstDC
LPDIRECTDRAW m_lpDDraw
LPDIRECTDRAWSURFACE m_lpDDSBack
LPDIRECTDRAWSURFACE m_lpDDSForDC
LPDIRECTDRAWSURFACE m_lpDDSOverlay
LPDIRECTDRAWSURFACE m_lpDDSPrimary
RECT m_rcDst
RECT m_rcSrc
bool m_visible
int m_x
DWORD m_xPositionAlignment
int m_y
DDOVERLAYFX ovfx

详细描述

对DirectDraw的Overlay的封装

使用这个类可以较方便的实现对DirectDraw的Overlay的操作


构造及析构函数文档

MzDDrawOverlay::MzDDrawOverlay (  ) 

构造函数,在没有调用Init之前,不会实际创建Overlay

MzDDrawOverlay::~MzDDrawOverlay (  ) 

析构函数,自行释放有关的资源


成员函数文档

HDC MzDDrawOverlay::BeginDraw (  ) 

获得Overlay对应的HDC

获得Overlay对应的HDC,此时Overlay会被锁定,可调用各种WindowsAPI对HDC进行绘图操作,使用方便,但速度没有LockData的方式快 BeginDraw必须与EndDraw成对调用,否则BeginDraw可能会返回NULL,两者之间调用LockData也会失败

返回:
返回获得的HDC
void MzDDrawOverlay::Clear (  ) 

将内部分配的资源释放,释放后,需要重新调用Init,否则Overlay不可用

void MzDDrawOverlay::EndDraw ( bool  flip = true  ) 

画图结束解除对Overlay的锁定

参数:
flip [in] 如果在Init中指定了使用后备缓冲,可以选择是否结束后备缓冲的绘制,将后备缓冲显示出来
void MzDDrawOverlay::Flip (  ) 

如果在Init中指定了使用后备缓冲,将后备缓冲显示出来

BOOL MzDDrawOverlay::GetExtendedProperty_MzDDrawOverlay ( int  nPropertyType,
void *  pValue,
int  nBufSize 
)

获取或设置对象的扩展属性值

参数:
nPropertyType 要获取或设置的属性类型
pValue 要获取或设置的属性值的指针
nBufSize pValue所指向的变量的size大小(单位: 字节)
返回:
操作是否成功
POINT MzDDrawOverlay::GetPosition (  ) 

获得Overlay当前左上角位置

void MzDDrawOverlay::HideOverlay (  ) 

隐藏Overlay

bool MzDDrawOverlay::Init ( HWND  hWnd,
int  x,
int  y,
int  width,
int  height,
COLORREF  colorKey,
BYTE  foreAlpha,
BYTE  backAlpha,
bool  needBackBuffer,
OverlayPixelFormat  pixFmt = PixFmtRGB565 
)

创建并初始化一个DirectDraw的Overlay表面

注意:不要在发生锁屏背景灯熄灭后,使用Init和Clear,否则会无法唤醒屏幕(或者其他不正常的现象),锁屏消息是 WM_MZ_SHELL_ENTRY_LOCKPHONE 锁屏后可以设置Overlay的透明度,最好设置为0,否则在系统锁屏界面会看到Overlay的内容

参数:
hWnd [in] 指定Overlay所在应用的窗口,MzDDrawOverlay只将其视为非全屏的窗口
x [in] Overlay左上角的横坐标
y [in] Overlay左上角的纵坐标
width [in] Overlay的宽度
height [in] Overlay的高度
colorKey [in] 设置一个颜色,Overlay上填充这个颜色的地方,都将被视为背景区域,否则为前景区域
foreAlpha [in] 前景区域的透明度,0是全透,15是不透明
backAlpha [in] 背景区域的透明度,0是全透,15是不透明
needBackBuffer [in] 是否启用后备缓冲,MzDDrawOverlay只创建一个后背缓冲,或者不创建
pixFmt [in] 指定Overlay的像素格式
返回:
是否创建并初始化成功
bool MzDDrawOverlay::IsVisible (  ) 

Overlay是否可见,可见状态下透明度可能为0.

bool MzDDrawOverlay::LockData ( DDSURFACEDESC *  pDDSD  ) 

获得Overlay当前的各项参数

Overlay会被锁定,可通过 DDSURFACEDESC 结构体中的 lpSurface 获得表面对应的数据的内存,直接对内存操作,比用HDC画图快

参数:
pDDSD [out] 获得的参数将被存放在pDDSD所指向的结构体中,有关 DDSURFACEDESC 结构体请参考DirectDraw的相关注释和文档
返回:
是否锁定成功
void MzDDrawOverlay::RestoreAllSurfaces (  )  [protected]
BOOL MzDDrawOverlay::SetExtendedProperty_MzDDrawOverlay ( int  nPropertyType,
void *  pValue,
int  nBufSize 
)

获取或设置对象的扩展属性值

参数:
nPropertyType 要获取或设置的属性类型
pValue 要设置的属性值的指针
nBufSize pValue所指向的变量的size大小(单位: 字节)
返回:
操作是否成功
void MzDDrawOverlay::SetPosition ( int  x,
int  y 
)

设置Overlay当前左上角位置,如果设置位置后,Overlay有区域超出屏幕范围,会导致设置失败或者图像不正确,对于Init调用也是这样

void MzDDrawOverlay::SetTransparency ( int  iValue = 15  ) 

可动态设置前景区域的透明度

void MzDDrawOverlay::ShowOverlay (  ) 

显示Overlay

bool MzDDrawOverlay::UnLockData ( bool  flip = true  ) 

画图结束解除对Overlay的锁定

参数:
flip [in] 如果在Init中指定了使用后备缓冲,可以选择是否结束后备缓冲的绘制,将后备缓冲显示出来
返回:
是否成功

成员数据文档

HDC MzDDrawOverlay::m_dstDC [protected]
LPDIRECTDRAW MzDDrawOverlay::m_lpDDraw [protected]
LPDIRECTDRAWSURFACE MzDDrawOverlay::m_lpDDSBack [protected]
LPDIRECTDRAWSURFACE MzDDrawOverlay::m_lpDDSForDC [protected]
LPDIRECTDRAWSURFACE MzDDrawOverlay::m_lpDDSOverlay [protected]
LPDIRECTDRAWSURFACE MzDDrawOverlay::m_lpDDSPrimary [protected]
RECT MzDDrawOverlay::m_rcDst [protected]
RECT MzDDrawOverlay::m_rcSrc [protected]
bool MzDDrawOverlay::m_visible [protected]
int MzDDrawOverlay::m_x [protected]
int MzDDrawOverlay::m_y [protected]
DDOVERLAYFX MzDDrawOverlay::ovfx [protected]

该类的文档由以下文件生成:

Generated at Tue Feb 9 15:09:59 2010 for Meizu M8 SDK Documentation by  doxygen 1.6.1