md_engine.h
来自「MDEngine2plus游戏开发库! 用来开发游戏超级简单!」· C头文件 代码 · 共 108 行
H
108 行
//********************************************************************
// MD 引擎 引擎 内核部件的定义
// Powered by @J--S Studio Johnhans 2004.08.08
//********************************************************************
#ifndef MD_ENGINE_H
#define MD_ENGINE_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifdef MDENGINE2P_EXPORTS
#define MDENGINE_API __declspec(dllexport)
#else
#define MDENGINE_API __declspec(dllimport)
#endif
#define DIRECTDRAW_VERSION 0x0700
#include <ddraw.h>
#include "common.h"
typedef DWORD ( *getProviderTypeDLL)(void);
typedef bool ( *Create)(HWND,DWORD,DWORD,int,bool);
typedef DWORD ( *ChangeDisplayMode)(DWORD,DWORD,int,bool);
typedef bool ( *SaveScreen)(char *);
typedef void ( *ClearScreen)(LPVOID,DWORD len);
class CMD_Surface;
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 force=false);
bool IsFullScreen(void);
const char* GetCPUName(void);
bool IsCPUMMX(void);
int GetCPUSpeed(void);
LPDIRECTDRAW7* GetDDObject(void);
LPDIRECTDRAWSURFACE7* GetSurface(BYTE surface);
SurfaceInfo* GetSurfaceInfo(BYTE surface);
DWORD GetPrimaryRGBMode(void);
DWORD GetRGBMode(LPDIRECTDRAWSURFACE7 lpDDS);
HWND GetHWnd(void);
LPSIZE GetScreenSize(void);
LPRECT GetScreenRect(void);
void ChangeDisplayMode(int dw_Width, int dw_Height , int bpp, bool bfullscreen=true, bool force=false);
bool SetWindowSize(int width,int height,bool autocenter = true);
bool SetWindowPos(int x,int y);
void CalcWindowPos(void);
void FlipScreen(void);
HRESULT RestoreAll(void);
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_WORK);
bool EndDraw(BYTE Surface=SUR_WORK);
bool SaveScreen(const TCHAR *filename);
void DrawFast(CMD_Surface *pSour, BYTE dest, int x, int y, bool Trans=true);
void DrawScaling(CMD_Surface *pSour, BYTE dest, int x, int y, int cx, int cy, bool Trans=true);
void DrawGray(CMD_Surface *pSour, BYTE dest, int x, int y, bool Trans=true);
void DrawAdditive(CMD_Surface *pSour, BYTE dest, int x, int y, bool Trans=true);
void DrawAlpha(CMD_Surface *pSour, BYTE dest, int x, int y, int alpha, bool Trans=true);
void DrawAlphaFast(CMD_Surface *pSour, BYTE dest, int x, int y, bool Trans=true);
//---------------- 错误处理 ---------------
inline void SetShowErrorMsg(bool show);
inline WORD GetErrorCode(void);
void ShowErrorMsg(void);
private:
LPDIRECTDRAW7 m_lpDD7; // DirectDraw7
LPDIRECTDRAWSURFACE7 m_lpDDSPrimary; // 主图面
LPDIRECTDRAWSURFACE7 m_lpDDSBack; // 后端缓冲区
LPDIRECTDRAWSURFACE7 m_lpDDSWork; // 工作缓冲区
HWND m_hWnd; // 主窗口句柄
SurfaceInfo m_SurfaceInfo; // 某图面信息
SIZE m_szScreen; // 屏幕宽、高
RECT m_rcScreen; // 窗口模式操作区域
BOOL m_bFullScreen; // 是否全屏模式
DWORD m_dwRGBMode; // 主图面像素格式
const char* m_cCPUName; // CPU名称
int m_iCPUSpeed; // CPU速度
bool m_bCPUMMX; // CPU是否支持MMX
bool m_bShowErrMsg; // 出现错误时显示对话框
WORD m_ErrCode; // 错误代码,0:无错误
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?