Small class for resolving and presenting in user readable form the codes from ::GetLastError() Win32 API function. The class has 2 static methods:
1 2 3 4 5 6 7 8 9 10 | void CLastError::Get( const DWORD& dwErrorCode, CString& strErrMessage ) { LPTSTR lpErrorText = NULL; ::FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, 0, dwErrorCode, 0, lpErrorText, MAX_PATH, 0 ); strErrMessage = lpErrorText; ::LocalFree( lpErrorText ); } |
The ‘Get’ method supplied an error code will resolve the code to user readable error message and store it in the supplied ‘strErrMessage’ string!
1 2 3 4 5 6 7 8 9 10 11 12 | void CLastError::Show( const DWORD& dwErrorCode, const CString& strAppName ) { CString strErrMessage; Get( dwErrorCode, strErrMessage ); CString strDisplayError; strDisplayError.Format( _T("%s encountered an error and needs to close!\n\nError was: %s"), strAppName, strErrMessage ); AfxMessageBox( strDisplayError, MB_ICONERROR | MB_OK ); } |
The ‘Show’ method supplied an error code will resolve the code to user readable error message and the message will be displayed to the user trough AfxMessageBox() function.
Class declaration:
class CLastError { public: CLastError( ); virtual ~CLastError( ); public: static void Get( const DWORD& dwErrorCode, CString& strErrMessage ); static void Show( const DWORD& dwErrorCode, const CString& strAppName ); }; |
Class implementation:
CLastError::CLastError( ) { } CLastError::~CLastError( ) { } void CLastError::Get( const DWORD& dwErrorCode, CString& strErrMessage ) { LPTSTR lpErrorText = NULL; ::FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, 0, dwErrorCode, 0, lpErrorText, MAX_PATH, 0 ); strErrMessage = lpErrorText; ::LocalFree( lpErrorText ); } void CLastError::Show( const DWORD& dwErrorCode, const CString& strAppName ) { CString strErrMessage; Get( dwErrorCode, strErrMessage ); CString strDisplayError; strDisplayError.Format( _T("%s encountered an error and needs to close!\n\nError was: %s"), strAppName, strErrMessage ); AfxMessageBox( strDisplayError, MB_ICONERROR | MB_OK ); } |