00001 #ifndef Spr_DDRAW_CCKDXERROR_H
00002 #define Spr_DDRAW_CCKDXERROR_H
00003 #include "WxComBase.h"
00004 #include <string>
00005
00006 #define WXERRMSG(n, msg) \
00007 Singleton<WXDXError>().Message(n, (msg), __FILE__, __LINE__)
00008 #define WXCHECK(err) \
00009 Singleton<WXDXError>().Check((err), "", __FILE__, __LINE__)
00010 #define WXCHECKMSG(err, msg) \
00011 Singleton<WXDXError>().Check((err), (msg), __FILE__, __LINE__)
00012
00013 #ifndef TRACE
00014 #define TRACE WXDXError::DebugPrintF
00015 #endif
00016
00017 namespace Spr {;
00018
00019
00020 class SPR_DLL WXDXError{
00021 protected:
00022 DWORD num;
00023 char* err;
00024 char* desc;
00025 std::string msg;
00026 std::string fname;
00027 int line;
00028 public:
00029 WXDXError();
00030 DWORD Num(){return num;}
00031 const char* Err(){return err;}
00032 const char* Desc(){return desc;}
00033 bool Check(DWORD n, const char* msg, const char* fn=NULL, int ln=0){
00034 if (!n) return true;
00035 return CheckImp(n, msg, fn, ln);
00036 }
00037 bool CheckImp(DWORD n, const char* msg, const char* fn=NULL, int ln=0);
00038 void Message(DWORD n, const char* msg, const char* fn=NULL, int ln=0);
00039 static void __cdecl DebugPrintF(const char* f,...);
00040 static bool DDErrorToString(char*& err, char*& desc, HRESULT error);
00041 static bool D3DErrorToString(char*& err, char*& desc, HRESULT error);
00042 };
00043
00044 }
00045
00046 #endif