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 );
} |
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 );
} |
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 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 );
} |
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 );
}