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

📄 cdxapp.h

📁 一个Direct3DRM的包装类的例子
💻 H
字号:
#define MAX_DRIVERS     10

#ifndef RELEASE
#define RELEASE(x) if ( (x) ) { (x)->Release(); (x)=NULL; }
#endif

class CDXApp
    {
public:
    inline LPCSTR GetCommandLine();
    GUID GetCurrentDriverGUID();
    LPCSTR GetCurrentDriverName();
    inline SIZE GetScreenSize();
    inline int GetBitDepth();
    inline LPCSTR GetWindowTitle();
    inline LPCSTR GetClassName();
    BOOL SetVideoMode( int nWidth,int nHeight,int nBitDepth,BOOL bFullScreen );
    void SetWindowTitle( LPCSTR lpszTitle );
    void SetClassName( LPCSTR lpszClass );
    inline void SetTextureFlags( D3DRMTEXTUREQUALITY tqTexture );
    inline void SetDither( BOOL bDither );
    inline void SetRenderFlags( D3DRMRENDERQUALITY rqRender );
    inline void SetHMenu( HMENU hMenu );
    inline void SetAccelerator( HACCEL hAccelerator );
    inline D3DRMTEXTUREQUALITY GetTextureFlags();
    inline BOOL GetDither();
    inline D3DRMRENDERQUALITY GetRenderFlags();
    inline HINSTANCE GetPrevHInstance();
    inline HINSTANCE GetHInstance();
    inline HMENU GetHMenu();
    inline HACCEL GetAccelerator();
    inline HWND GetHWnd();
    inline BOOL IsFullScreen();
    inline BOOL IsInitialised();
    inline BOOL IsMinimised();
    inline BOOL IsQuitting();
    inline BOOL IsMMX();
    BOOL RenderFrame();
    ~CDXApp();
    CDXApp( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPCSTR lpszCmdLine,int nCmdShow );
protected:
    HWND m_hWndParent;
    DWORD m_dwStyles;
    LPDIRECT3DDEVICE2 m_pD3DIDevice2;
    LPCSTR m_lpszCmdLine;
    D3DCOLORMODEL m_d3dPreferedColorModel;
    BOOL m_bRightButton;
    BOOL m_bLeftButton;
    int m_nMouseY;
    int m_nMouseX;
    BOOL m_bForceFullUpdate;
    BOOL m_bIsPaused;
    BOOL m_bIsActive;
    BOOL m_bIsMMX;
    DWORD m_dwPlatformVersion;
    DWORD m_dwDirectXVersion;
    BOOL EnumerateDrivers();
    BOOL CreateDeviceAndViewport();
    void CleanUp();
    BOOL InitialiseD3DRM();
    D3DRMRENDERQUALITY m_rqRenderFlags;
    BOOL m_bDither;
    D3DRMTEXTUREQUALITY m_tqTextureFlags;
    char m_szWindowTitle[128];
    char m_szClassName[64];
    SIZE m_sizeScreen;
    int m_nBitDepth;
    BOOL m_bIsFullScreen;
    BOOL m_bIsMinimised;
    BOOL m_bIsInitialised;
    BOOL m_bIsQuitting;
    int m_nCurrDriver;
    int m_nNumDrivers;
    char m_szDriverName[MAX_DRIVERS][50];
    GUID m_DriverGUID[MAX_DRIVERS];
    HWND m_hWnd;
    HMENU m_hMenu;
    HACCEL m_hAccelerator;
    HINSTANCE m_hInstance;
    HINSTANCE m_hPrevInstance;
    LPDIRECT3DRMFRAME2 m_pD3DCamera;
    LPDIRECT3DRMFRAME2 m_pD3DScene;
    LPDIRECT3DRMVIEWPORT m_pD3DViewport;
    LPDIRECT3DRMDEVICE2 m_pD3DDevice;
    LPDIRECTDRAWCLIPPER m_pDDClipper;
    LPDIRECT3DRM2 m_pD3DRM2;
    LPDIRECT3DRM m_pD3DRM;
    LPDIRECTDRAW m_pDD;
    LPDIRECTDRAW2 m_pDD2;
    LPDIRECT3D2 m_pD3D;
    LPDIRECTDRAWSURFACE3 m_pPrimarySurface;
    LPDIRECTDRAWSURFACE3 m_pBackBuffer;
#ifdef _DEBUG
    BOOL InitialiseStatistics();
    BOOL m_bEnableStats;
    LPCSTR m_lpszDebugFileName;
    HANDLE m_hDebugHandle;
    DWORD m_dwDebugOptions;
    LPDIRECTDRAWSURFACE m_pStatsSurface;
    LPDIRECTDRAWSURFACE m_pInfoSurface;
    inline LPDIRECTDRAWSURFACE GetStatsSurface() { return( m_pStatsSurface ); }
    inline LPDIRECTDRAWSURFACE GetInfoSurface() { return( m_pInfoSurface ); }
    BOOL ShowStatistics();
    BOOL ShowModeInfo();
    float GetFPS();
    DWORD GetTPS();
    void CalculateFrameRate();
#endif  //_DEBUG
public:
    inline LPCSTR GetDriverName( int nIndex );
    inline HWND GetParent();
    inline void SetParent( HWND hWnd );
    inline void SetStyles( DWORD dwStyles );
    inline DWORD GetStyles();
    inline LPDIRECT3DDEVICE2 GetD3DIDevice();
    inline LPDIRECT3D2 GetD3D();
    inline D3DCOLORMODEL GetPreferedColorModel();
    inline void SetPreferedColorModel( D3DCOLORMODEL d3dModel );
    inline LPDIRECT3DRMFRAME2 GetCamera();
    inline LPDIRECT3DRM2 GetD3DRM2();
    inline void GetMouseInfo( BOOL &bLeftButton,BOOL &bRightButton,int &nXPos,int &nYPos );
    void PauseApp( BOOL bPause );
    BOOL ActivateMenu();
    inline BOOL IsPaused();
    inline void SetActive( BOOL bActive );
    inline BOOL IsActive();
    inline void SetMinimized( BOOL bMinimized );
    BOOL IsRGB();
    inline DWORD GetDirectXVersion();
    inline LPDIRECT3DRMVIEWPORT GetViewport();
    inline LPDIRECT3DRMFRAME2 GetScene();
    BOOL SetRenderState();
    BOOL AddEnumDevice( LPGUID lpGUID, LPCSTR lpszDeviceName );
    inline int GetNumDrivers();
    inline LPDIRECT3DRMDEVICE2 Get3DDevice();
    void SetQuit();
#ifdef _DEBUG
    enum { DBF_FILE=0x0001, DBF_WINDOW=0x0002 };
    BOOL SetDebugOptions( LPCSTR lpszFileName, DWORD dwOptions );
    inline void SetDebugOptions( DWORD dwOptions ) { m_dwDebugOptions=dwOptions; }
    void ErrHandler( LPCSTR lpszWhere,LPCSTR lpszText = NULL,HRESULT hErr = 0 );
    void DisplayStats();
    inline void EnableStats( BOOL bEnable ) { m_bEnableStats=bEnable; }
    inline DWORD GetDebugOptions() { return( m_dwDebugOptions ); }
#else   //_DEBUG
    inline void ErrHandler( LPCSTR lpszWhere,LPCSTR lpszText = NULL,HRESULT hErr = 0 ) { }
#endif  //_DEBUG
    friend LONG FAR PASCAL CDXWindowProc( HWND,UINT,WPARAM,LPARAM );
    };

/*  General support TRACE function  */

#ifndef TRACE
#ifdef _DEBUG
void __cdecl TRACE( LPSTR fmt, ... );
#else
inline void __cdecl TRACE( LPSTR fmt, ... ) { }
#endif  //_DEBUG
#endif  //TRACE

/*  Make generally available a pointer to wrapper  */

CDXApp      *pApp;

/*  External functions that are supplied (app specific)  */

extern BOOL     AppInitHook( void );
extern BOOL     AppCreateScene( void );
extern LONG     AppWindowProcHook( HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam );
extern void     AppIdleHook( void );

inline BOOL CDXApp::IsQuitting()
    {
        return( m_bIsQuitting );
    }

inline BOOL CDXApp::IsMinimised()
    {
        return( m_bIsMinimised );
    }

inline BOOL CDXApp::IsInitialised()
    {
        return( m_bIsInitialised );
    }

inline BOOL CDXApp::IsFullScreen()
    {
        return( m_bIsFullScreen );
    }

inline HWND CDXApp::GetHWnd()
    {
        return( m_hWnd );
    }

inline HACCEL CDXApp::GetAccelerator()
    {
        return( m_hAccelerator );
    }

inline HMENU CDXApp::GetHMenu()
    {
        return( m_hMenu );
    }

inline HINSTANCE CDXApp::GetHInstance()
    {
        return( m_hInstance );
    }

inline HINSTANCE CDXApp::GetPrevHInstance()
    {
        return( m_hPrevInstance );
    }

inline D3DRMRENDERQUALITY CDXApp::GetRenderFlags()
    {
        return( m_rqRenderFlags );
    }

inline BOOL CDXApp::GetDither()
    {
        return( m_bDither );
    }

inline D3DRMTEXTUREQUALITY CDXApp::GetTextureFlags()
    {
        return( m_tqTextureFlags );
    }

inline void CDXApp::SetAccelerator( HACCEL hAccelerator )
    {
        m_hAccelerator = hAccelerator;
    }

inline void CDXApp::SetHMenu( HMENU hMenu )
    {
        m_hMenu = hMenu;
    }

inline void CDXApp::SetRenderFlags( D3DRMRENDERQUALITY rqRender )
    {
        m_rqRenderFlags = rqRender;
        if ( m_bIsInitialised ) SetRenderState();
    }

inline void CDXApp::SetDither( BOOL bDither )
    {
        m_bDither = bDither;
        if ( m_bIsInitialised ) SetRenderState();
    }

inline void CDXApp::SetTextureFlags( D3DRMTEXTUREQUALITY tqTexture )
    {
        m_tqTextureFlags = tqTexture;
        if ( m_bIsInitialised ) SetRenderState();
    }

inline LPCSTR CDXApp::GetClassName()
    {
        return( (LPCSTR)m_szClassName );
    }

inline LPCSTR CDXApp::GetWindowTitle()
    {
        return( (LPCSTR)m_szWindowTitle );
    }

inline int CDXApp::GetBitDepth()
    {
        return( m_nBitDepth );
    }

inline SIZE CDXApp::GetScreenSize()
    {
        return( m_sizeScreen );
    }

inline LPDIRECT3DRMDEVICE2 CDXApp::Get3DDevice()
    {
        return( m_pD3DDevice );
    }

inline int CDXApp::GetNumDrivers()
    {
        return( m_nNumDrivers );
    }

inline LPDIRECT3DRMFRAME2 CDXApp::GetScene()
    {
        return( m_pD3DScene );
    }

inline LPDIRECT3DRMVIEWPORT CDXApp::GetViewport()
    {
        return( m_pD3DViewport );
    }

inline DWORD CDXApp::GetDirectXVersion()
    {
        return( m_dwDirectXVersion );
    }

inline void CDXApp::SetMinimized( BOOL bMinimized )
    {
        m_bIsMinimised = bMinimized;
    }

inline BOOL CDXApp::IsMMX()
    {
        return( m_bIsMMX );
    }
inline BOOL CDXApp::IsActive()
    {
        return( m_bIsActive );
    }

inline void CDXApp::SetActive( BOOL bActive )
    {
        m_bIsActive = bActive;
    }


inline BOOL CDXApp::IsPaused()
    {
        return( m_bIsPaused );
    }

inline void CDXApp::GetMouseInfo( BOOL &bLeftButton,BOOL &bRightButton,int &nXPos,int &nYPos )
    {
        bLeftButton     = m_bLeftButton;
        bRightButton    = m_bRightButton;
        nXPos           = m_nMouseX;
        nYPos           = m_nMouseY;
    }

inline LPDIRECT3DRM2 CDXApp::GetD3DRM2()
    {
        return( m_pD3DRM2 );
    }

inline LPDIRECT3DRMFRAME2 CDXApp::GetCamera()
    {
        return( m_pD3DCamera );
    }

inline void CDXApp::SetPreferedColorModel( D3DCOLORMODEL d3dModel )
    {
        m_d3dPreferedColorModel = d3dModel;
    }

inline D3DCOLORMODEL CDXApp::GetPreferedColorModel()
    {
        return( m_d3dPreferedColorModel );
    }

inline LPCSTR CDXApp::GetCommandLine()
    {
        return( m_lpszCmdLine );
    }

inline LPDIRECT3D2 CDXApp::GetD3D()
    {
        return( m_pD3D );
    }

inline LPDIRECT3DDEVICE2 CDXApp::GetD3DIDevice()
    {
        return( m_pD3DIDevice2 );
    }

inline DWORD CDXApp::GetStyles()
{
    return( m_dwStyles );
}

inline void CDXApp::SetStyles( DWORD dwStyles )
{
    m_dwStyles=dwStyles;
}

inline void CDXApp::SetParent( HWND hWnd )
    {
        m_hWndParent=hWnd;
    }

inline HWND CDXApp::GetParent()
    {
        return( m_hWndParent );
    }

inline LPCSTR CDXApp::GetDriverName( int nIndex )
{
    if ( nIndex<0 || nIndex>=m_nNumDrivers ) return( NULL );
    return( m_szDriverName[nIndex] );
}

⌨️ 快捷键说明

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