📄 md_engine.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 + -