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

📄 tddrawbase.h

📁 一个小游戏程序!! 大家可以来
💻 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 + -