⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zgfx.h

📁 wince (windows mobile)绘制的很好实例,可以作为视频开发的参考
💻 H
字号:
#ifndef _ZGFX_INCLUDED_
#define _ZGFX_INCLUDED_

#include ".\ddraw.h"

struct GfxRect 
{
	WORD x;
	WORD y;
	WORD w;
	WORD h;
};

struct GfxKeys
{
	short Up;
	short Down;
	short Left;
	short Right;
	short A;
	short B;
	short C;
	short S;
};

enum GfxRetval
{
	GfxOK=0,
	GfxNoSurface,
	GfxUnsupportedDevice,
	GfxMallocError,
	GfxBegindrawFailed,
	GfxSurfaceLockFailed,
	GfxWindowsVersionError,
	GfxParameterError,
	GfxError
};

enum GfxSubsys
{
	gfxNone=0,
	gfxRawFrameBuffer,
	gfxGAPI,
	gfxDirectDraw
};

enum GfxOrientation
{
	gfxPortrait,
	gfxLandscape
};

//color conversion macro
#define RGB_TO_565(r,g,b) (WORD) ((r & 0xf8 )<<8) | ((g&0xfc)<<3) | ((b&0xf8)>>3)
//average macro
#define AVERAGE_565(a, b)   ( ((((a) ^ (b)) & 0xf7deU) >> 1) + ((a) & (b)) )

//GAPI func prototypes
typedef int (*GXOPENDISPLAY)(HWND, DWORD);
typedef struct GXDisplayProperties (*GXGETDISPLAYPROPERTIES)(void);
typedef void * (*GXBEGINDRAW)(void);
typedef struct GXKeyList (*GXGETDEFAULTKEYS)(int);

//DirectDraw
typedef LONG (*DIRECTDRAWCREATE)(LPGUID, LPUNKNOWN *, LPUNKNOWN *);

class ZGfx
{
public:
	GfxRetval GfxCreateSurface(HWND, unsigned short, unsigned short, GfxSubsys *);
	GfxRetval GfxUninit();
	GfxRetval GfxUpdateScreen();
	GfxRetval GfxDrawPixel(int, int, unsigned short);
	GfxRetval GfxClearScreen(bool);
	GfxRetval GfxClearHWBuffer();
	GfxRetval GfxFillHWBuffer(unsigned short);
	GfxRetval GfxFillRect(GfxRect rect, unsigned short color);
	GfxRetval GfxDrawLine(int, int, int, int, unsigned short);
	GfxRetval GfxGetPixelColor(int, int, unsigned short *);
	bool GfxIsInitialized();
	GfxRetval GfxGetWidth(int *);
	GfxRetval GfxGetHeight(int *);
	GfxRetval GfxGetPixelAddress(int, int, unsigned short **);
	GfxRetval GfxGetBufferYPitch(int *);
	GfxRetval GfxGetXCenter(int *);
	GfxRetval GfxGetYCenter(int *);
	GfxRetval GfxSuspend();
	GfxRetval GfxResume();
	GfxSubsys GfxGetSubSys();	
	GfxRetval GfxGetKeys(GfxOrientation, GfxKeys *);

protected:
	bool GfxLoadGAPI();
	bool GfxInitGAPI();
	bool GfxInitRawFrameBufferAccess();
	bool GfxLoadDirectDraw();
	bool GfxInitDirectDraw();

protected:
	GfxSubsys m_usedsubsys;
	bool m_gfxinited;
	void *m_screenbuf, *m_framebuf;
	DWORD m_screenbufsize, m_framebufsize;
	unsigned short m_screenbufwidth, m_screenbufheight, m_framebufwidth, m_framebufheight;
	unsigned short m_xcenter, m_ycenter;
	long m_xpitch, m_ypitch, m_cbpp;
	HWND m_hwnd;
	HINSTANCE m_hGAPI, m_hDD;		//GAPI required for getting key list, if used, DirectDraw is loaded too

	//gapi funcs
protected:
	GXOPENDISPLAY m_GXOpenDisplay;
	FARPROC m_GXCloseDisplay;
	GXGETDISPLAYPROPERTIES m_GXGetDisplayProperties;
	GXBEGINDRAW m_GXBeginDraw;
	FARPROC m_GXEndDraw;
	FARPROC m_GXOpenInput;
	FARPROC m_GXCloseInput;
	FARPROC m_GXSuspend;
	FARPROC m_GXResume;
	GXGETDEFAULTKEYS m_GXGetDefaultKeys;

	//directdraw stuff
	DIRECTDRAWCREATE m_DirectDrawCreate;

	IDirectDraw *m_pdd;
	DDSURFACEDESC m_ddsd;
	IDirectDrawSurface *m_psurf;

};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -