#include <MzDDrawOverlay.h>
公有成员 | |
| HDC | BeginDraw () |
| 获得Overlay对应的HDC | |
| void | Clear () |
| 将内部分配的资源释放,释放后,需要重新调用Init,否则Overlay不可用 | |
| void | EndDraw (bool flip=true) |
| 画图结束解除对Overlay的锁定 | |
| void | Flip () |
| 如果在Init中指定了使用后备缓冲,将后备缓冲显示出来 | |
| 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 | |
| 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的操作
| MzDDrawOverlay::MzDDrawOverlay | ( | ) |
构造函数,在没有调用Init之前,不会实际创建Overlay
| MzDDrawOverlay::~MzDDrawOverlay | ( | ) |
析构函数,自行释放有关的资源
| HDC MzDDrawOverlay::BeginDraw | ( | ) |
获得Overlay对应的HDC
获得Overlay对应的HDC,此时Overlay会被锁定,可调用各种WindowsAPI对HDC进行绘图操作,使用方便,但速度没有LockData的方式快 BeginDraw必须与EndDraw成对调用,否则BeginDraw可能会返回NULL,两者之间调用LockData也会失败
| void MzDDrawOverlay::Clear | ( | ) |
将内部分配的资源释放,释放后,需要重新调用Init,否则Overlay不可用
| void MzDDrawOverlay::EndDraw | ( | bool | flip = true |
) |
画图结束解除对Overlay的锁定
| flip | [in] 如果在Init中指定了使用后备缓冲,可以选择是否结束后备缓冲的绘制,将后备缓冲显示出来 |
| void MzDDrawOverlay::Flip | ( | ) |
如果在Init中指定了使用后备缓冲,将后备缓冲显示出来
| 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] |
| 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] |
DWORD MzDDrawOverlay::m_xPositionAlignment [protected] |
int MzDDrawOverlay::m_y [protected] |
DDOVERLAYFX MzDDrawOverlay::ovfx [protected] |