You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
1.7 KiB
107 lines
1.7 KiB
|
|
#ifndef _CHRESULT_HXX_
|
|
#define _CHRESULT_HXX_
|
|
|
|
class CHResult
|
|
{
|
|
public:
|
|
|
|
~CHResult()
|
|
{
|
|
Initialize();
|
|
}
|
|
|
|
CHResult()
|
|
{
|
|
_hr = E_FAIL;
|
|
_bstrMessage = NULL;
|
|
_pszFile = NULL;
|
|
_ulLine = (ULONG) 0;
|
|
}
|
|
|
|
CHResult( HRESULT hr, const LPOLESTR pwszMessage, const LPSTR pszFile, ULONG ulLine )
|
|
{
|
|
_hr = hr;
|
|
|
|
_bstrMessage = SysAllocString( pwszMessage );
|
|
|
|
_pszFile = new CHAR[strlen(pszFile) + sizeof(CHAR)];
|
|
if( NULL != _pszFile )
|
|
memcpy( _pszFile, pszFile, strlen(pszFile) + sizeof(CHAR) );
|
|
|
|
_ulLine = ulLine;
|
|
}
|
|
|
|
CHResult( HRESULT hr, LPOLESTR pwszMessage )
|
|
{
|
|
this->CHResult::CHResult( hr, pwszMessage, NULL, 0 );
|
|
}
|
|
|
|
|
|
public:
|
|
|
|
operator HRESULT()
|
|
{
|
|
return( _hr );
|
|
}
|
|
|
|
operator LPOLESTR()
|
|
{
|
|
return( _bstrMessage );
|
|
}
|
|
|
|
operator =(HRESULT hr)
|
|
{
|
|
_hr = hr;
|
|
|
|
SysFreeString( _bstrMessage );
|
|
_bstrMessage = NULL;
|
|
|
|
return(_hr);
|
|
}
|
|
|
|
public:
|
|
|
|
ULONG GetLastResult()
|
|
{
|
|
Initialize();
|
|
_hr = HRESULT_FROM_WIN32(GetLastResult());
|
|
return( _hr );
|
|
}
|
|
|
|
LPSTR GetFile()
|
|
{
|
|
return( _pszFile );
|
|
}
|
|
|
|
ULONG GetLine()
|
|
{
|
|
return( _ulLine );
|
|
}
|
|
|
|
private:
|
|
|
|
void Initialize()
|
|
{
|
|
_hr = E_FAIL;
|
|
_ulLine = 0;
|
|
|
|
SysFreeString( _bstrMessage );
|
|
_bstrMessage = NULL;
|
|
|
|
CoTaskMemFree( _pszFile );
|
|
_pszFile = NULL;
|
|
}
|
|
|
|
private:
|
|
|
|
HRESULT _hr;
|
|
BSTR _bstrMessage;
|
|
LPSTR _pszFile;
|
|
ULONG _ulLine;
|
|
};
|
|
|
|
|
|
#define CHRESULT(hr,pwszMessage) CHResult( hr, pwszMessage, __FILE__, __LINE__ )
|
|
|
|
#endif
|