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

📄 md_engine.h

📁 我用MDEngine写的游戏
💻 H
字号:
//********************************************************************
//						MD 引擎 引擎 内核部件的定义
//		Powered by @J--S Studio			Johnhans		2002.7.15
//********************************************************************

#ifndef MD_ENGINE_H
#define MD_ENGINE_H

#ifdef MDENGINE_EXPORTS
#define MDENGINE_API __declspec(dllexport)
#else
#define MDENGINE_API __declspec(dllimport)
#endif

#define DIRECTDRAW_VERSION 0x0700

#include <ddraw.h>

#define RGBMODE_555		(16<<2)+1	// 16位 555 模式
#define RGBMODE_565		(16<<2)+2	// 16位 565 模式
#define RGBMODE_16      16<<2		// 16位 未知 模式
#define RGBMODE_24		24<<2		// 24位模式
#define RGBMODE_32		32<<2		// 32位模式
#define RGBMODE_NONE	8 <<2		// 8 位调色板模式
#define RGBMODE_AUTO	6			// 使用主图面像素格式

#define SUR_PRIMARY		1
#define SUR_BACK		2

#define COLORKEY_NO		0xFFFFFFFF

struct SurfaceInfo
{
	int		Width;			//图面宽
	int		Height;			//图面高
	BYTE	*GraphBuffer;	//图面缓冲区指针
	DWORD	GraphPitch;		//图面缓冲区跨度
};

class MDENGINE_API CMD_Engine  
{
public:
	CMD_Engine(void);
	virtual ~CMD_Engine(void);
	void Free(void);

public:
	bool	Create(HWND h_Wnd, DWORD dw_Width, DWORD dw_Height, int dw_Bpp, BOOL bFullScreen=true);
	bool	IsFullScreen(void) { return m_bFullScreen==1?true:false; }
	LPDIRECTDRAW7* GetDDObject(void) { return &m_lpDD7; }
	LPDIRECTDRAWSURFACE7* GetSurface(BYTE surface);
	DWORD	GetPrimaryRGBMode(void) { return m_dwRGBMode; }
	SurfaceInfo* GetSurfaceInfo(BYTE surface);
	DWORD	GetRGBMode(LPDIRECTDRAWSURFACE7 lpDDS);
	HWND	GetWnd(void){ return m_hWnd; }
	LPSIZE	GetScreenSize(void){ return &m_szScreen; }
	LPRECT	GetScreenRect(void){ return &m_rcScreen; }
	bool	GetPictureSize(TCHAR *szName, LPSIZE lpSize );
	void	ChangeDisplayMode(DWORD dw_Width, DWORD dw_Height, bool bfullscreen=true);
	void	CalcWindowPos();
	void	FlipScreen(void);
	HRESULT RestoreAll(void) { return m_lpDD7->RestoreAllSurfaces();}

	DWORD	ColorMatch(WORD R, WORD G, WORD B);
	DWORD	ColorMatch(DWORD RGBcolor);
	DWORD	ColorMatch_DC(DWORD rgb);

	void	ClearScreen(BYTE Surface, LPRECT rect, DWORD Color);
	void	ClearScreen(BYTE Surface, LPRECT rect, WORD R=0,WORD G=0,WORD B=0);
	bool	BeginDraw(BYTE Surface=SUR_BACK);
	bool	EndDraw(BYTE Surface=SUR_BACK);
	void	SaveScreen(const TCHAR *filename);

private:
	LPDIRECTDRAW7			m_lpDD7;				//DirectDraw7
	LPDIRECTDRAWSURFACE7	m_lpDDSPrimary;			//主图面
	LPDIRECTDRAWSURFACE7	m_lpDDSBack;			//后端缓冲区
	HWND					m_hWnd;					//主窗口句柄
	SurfaceInfo				m_SurfaceInfo;			//某图面信息
	SIZE					m_szScreen;				//屏幕宽、高
	RECT					m_rcScreen;				//窗口模式操作区域
	BOOL					m_bFullScreen;			//是否全屏模式
	DWORD					m_dwRGBMode;			//主图面像素格式
};

#endif

⌨️ 快捷键说明

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