📄 tddrawbase.h
字号:
//---------------------------------------------------------------------------
#ifndef _TDDRAWBASE_H_YBCHEN_
#define _TDDRAWBASE_H_YBCHEN_
//---------------------------------------------------------------------------
#ifndef STRICT
# define STRICT
#endif
//---------------------------------------------------------------------------
#include <ddraw.h>
#include <vcl.h>
#include <tchar.h>
//---------------------------------------------------------------------------
#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p)=NULL; } }
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
//---------------------------------------------------------------------------
class PACKAGE TDDrawDisplay;
class PACKAGE TDDrawSurface;
//---------------------------------------------------------------------------
class PACKAGE TDDrawDisplay
{
public:
__property HWND hWindow = { read = _hWindow }; //GetHWnd()
__property LPDIRECTDRAW7 DirectDraw = { read = _DirectDraw }; //GetDirectDraw()
__property LPDIRECTDRAWSURFACE7 FrontBuffer = { read = _FrontBuffer }; //GetFrontBuffer()
__property LPDIRECTDRAWSURFACE7 BackBuffer = { read = _BackBuffer }; //GetBackBuffer()
__property bool IsWindowed = { read = _bWindowed }; //IsWindowed()
TDDrawDisplay(HWND hWnd);
~TDDrawDisplay();
HRESULT CreateFullScreenDisplay(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP);
HRESULT CreateWindowedDisplay(void);
HRESULT InitClipper(void);
HRESULT UpdateBounds(void);
virtual HRESULT DestroyObjects(void);
HRESULT CreatePaletteFromBitmap(LPDIRECTDRAWPALETTE* ppPalette, const TCHAR* strBMP);
HRESULT Clear(DWORD dwColor = 0L);
HRESULT ColorKeyBlt(DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, RECT* prc = NULL);
HRESULT Blt(DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, RECT* prc=NULL, DWORD dwFlags=0);
HRESULT Blt(DWORD x, DWORD y, TDDrawSurface* pSurface, RECT* prc = NULL);
HRESULT ShowBitmap(HBITMAP hbm, LPDIRECTDRAWPALETTE pPalette=NULL);
HRESULT SetPalette(LPDIRECTDRAWPALETTE pPalette);
HRESULT Present();
protected:
LPDIRECTDRAW7 _DirectDraw;
LPDIRECTDRAWSURFACE7 _FrontBuffer;
LPDIRECTDRAWSURFACE7 _BackBuffer;
HWND _hWindow;
RECT _WindowRect;
bool _bWindowed;
DWORD _ScrWidth, _ScrHeight;
};
//---------------------------------------------------------------------------
class PACKAGE TDDrawSurface
{
public:
__property TDDrawDisplay *DDrawDisplay = { read = _DDrawDisplay }; //TDDrawDisplay address
__property LPDIRECTDRAWSURFACE7 DDrawSurface = { read = _DDrawSurface }; //GetDDrawSurface()
__property DDSURFACEDESC2 SurfaceDesc = { read = _SurfaceDesc }; //GetSurfaceDesc()
__property bool ColorKeyed = { read = _bColorKeyed }; //IsColorKeyed()
__property DWORD ColorKey = { read = _dwColorKey, write = fSetColorKey };
__property DWORD ColorKeyFlags = { read = _dwColorKeyFlags, write = fSetColorKeyFlags };
HRESULT DrawBitmap(HBITMAP hBMP, DWORD dwBMPOriginX=0, DWORD dwBMPOriginY=0, DWORD dwBMPWidth=0, DWORD dwBMPHeight=0);
HRESULT DrawBitmap(TCHAR* strBMP, DWORD dwDesiredWidth, DWORD dwDesiredHeight);
HRESULT DrawText(HFONT hFont, TCHAR* strText, DWORD dwOriginX, DWORD dwOriginY, COLORREF crBackground, COLORREF crForeground);
HRESULT SetColorKey(DWORD dwKeyFlags, DWORD dwColorKey);
DWORD ConvertGDIColor(COLORREF dwGDIColor);
static HRESULT GetBitMaskInfo(DWORD dwBitMask, DWORD* pdwShift, DWORD* pdwBits);
HRESULT Create(DDSURFACEDESC2* pddsd);
HRESULT Create(LPDIRECTDRAWSURFACE7 pdds);
HRESULT Create(int dwWidth, int dwHeight);
HRESULT Destroy() { SAFE_RELEASE(_DDrawSurface); return S_OK; }
HRESULT CreateSurfaceFromBitmap(TCHAR* strBMP, DWORD dwWidth, DWORD dwHeight);
HRESULT CreateSurfaceFromText(HFONT hFont, TCHAR* strText, COLORREF crBackground, COLORREF crForeground );
TDDrawSurface(TDDrawDisplay *lpddd);
~TDDrawSurface();
private:
TDDrawDisplay *_DDrawDisplay; //keep the address of TDDrawDisplay
LPDIRECTDRAWSURFACE7 _DDrawSurface;
DDSURFACEDESC2 _SurfaceDesc;
bool _bColorKeyed;
DWORD _dwColorKey;
DWORD _dwColorKeyFlags;
inline void fSetColorKey(DWORD dwColorKey) { SetColorKey(_dwColorKeyFlags,dwColorKey); }
inline void fSetColorKeyFlags(DWORD dwFlags) { SetColorKey(dwFlags, _dwColorKey); }
};
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -