/* ======================================================================================= Name :error.cpp Author :Vincent lhullier Date :27/04/97 Description :error management ======================================================================================= Modification -> Author : Date : Description : ======================================================================================= */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ #include "stdafx.h" #include "error.h" /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* ======================================================================================= Globals ======================================================================================= */ char Error_g_szSystemMessage[1024]; char Error_g_szMessage[1024]; Error_tdeValue Error_g_eLast; /* ======================================================================================= Set functions ======================================================================================= */ /* ---------------------------------------------------------------------------------------- Description : set last error _eError -> last error _szErrorString -> error message ---------------------------------------------------------------------------------------- */ void Error_fn_vSet( Error_tdeValue _eError, char *_szErrorString ) { /* get system error */ DWORD dwError = GetLastError(); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,dwError,0, Error_g_szSystemMessage,1024, NULL); /* copy or clear last error message */ strcpy( Error_g_szMessage, (_szErrorString == NULL) ? "" : _szErrorString ); /* set last error */ Error_g_eLast = _eError; } /* ---------------------------------------------------------------------------------------- Description : set last error with a va_list parameter _eError -> last error _szFormat -> string format ... -> other parameter ---------------------------------------------------------------------------------------- */ void Error_fn_vSetFmt( Error_tdeValue _eError, char *_szFormat, ... ) { /* get system error */ DWORD dwError = GetLastError(); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,dwError,0, Error_g_szSystemMessage,1024, NULL); /* set last error */ Error_g_eLast = _eError; /* get last error message */ va_list argptr; va_start( argptr, _szFormat ); vsprintf( Error_g_szMessage, _szFormat, argptr ); va_end( argptr ); } /* ======================================================================================= Access functions ======================================================================================= */ /* ---------------------------------------------------------------------------------------- Description : get last error number Returns (tdeError ) last error ---------------------------------------------------------------------------------------- */ Error_tdeValue Error_fn_eGet( void ) { return Error_g_eLast; } /* ---------------------------------------------------------------------------------------- Description : get last error message Returns (char *) last error message ---------------------------------------------------------------------------------------- */ char *Error_fn_p_szGetMessage( void ) { return Error_g_szMessage; } /* ---------------------------------------------------------------------------------------- Description : return last system error message Returns (char *) last system error message ---------------------------------------------------------------------------------------- */ char *Error_fn_p_szGetSystemMessage( void ) { return Error_g_szSystemMessage; } /* ======================================================================================= Display function ======================================================================================= */ /* ---------------------------------------------------------------------------------------- Description : display last error in a message box _bSystem -> if True display system message also ---------------------------------------------------------------------------------------- */ void Error_fn_vDisplay( BOOL _bSystem ) { char szText[2048]; char* p_szText; p_szText = szText + sprintf( szText, "%s", Error_g_szMessage ); if ( _bSystem ) { sprintf( p_szText, "\r\n---------\r\n%s", Error_g_szSystemMessage ); } MessageBox( NULL, szText, "Error", MB_ICONERROR ); }