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