|
|
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996 Microsoft Corporation
//
// Module Name:
// ExcOper.h
//
// Abstract:
// Definition of the exception classes.
//
// Author:
// David Potter (davidp) May 20, 1996
//
// Implementation File:
// ExcOper.cpp
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _EXCOPER_H_
#define _EXCOPER_H_
/////////////////////////////////////////////////////////////////////////////
// Include Files
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CExceptionWithOper; class CNTException;
/////////////////////////////////////////////////////////////////////////////
// Type Definitions
/////////////////////////////////////////////////////////////////////////////
typedef DWORD SC;
#define EXCEPT_MAX_OPER_ARG_LENGTH 260
/////////////////////////////////////////////////////////////////////////////
// CExceptionWithOper
/////////////////////////////////////////////////////////////////////////////
class CExceptionWithOper : public CException { // abstract class for dynamic type checking
DECLARE_DYNAMIC(CExceptionWithOper)
public: // Constructors
CExceptionWithOper( IN IDS idsOperation, IN LPCTSTR pszOperArg1 = NULL, IN LPCTSTR pszOperArg2 = NULL ); CExceptionWithOper( IN IDS idsOperation, IN LPCTSTR pszOperArg1, IN LPCTSTR pszOperArg2, IN BOOL bAutoDelete );
// Operations
public: virtual BOOL GetErrorMessage( LPTSTR lpszError, UINT nMaxError, PUINT pnHelpContext = NULL ); virtual int ReportError( UINT nType = MB_OK, UINT nError = 0 ); void SetOperation( IN IDS idsOperation, IN LPCTSTR pszOperArg1, IN LPCTSTR pszOperArg2 ); void FormatWithOperation( OUT LPTSTR lpszError, IN UINT nMaxError, IN LPCTSTR pszMsg );
// Implementation
public: virtual ~CExceptionWithOper(void);
protected: IDS m_idsOperation; TCHAR m_szOperArg1[EXCEPT_MAX_OPER_ARG_LENGTH]; TCHAR m_szOperArg2[EXCEPT_MAX_OPER_ARG_LENGTH];
public: IDS IdsOperation(void) { return m_idsOperation; } LPTSTR PszOperArg1(void) { return m_szOperArg1; } LPTSTR PszOperArg2(void) { return m_szOperArg2; }
}; //*** class CExceptionWithOper
/////////////////////////////////////////////////////////////////////////////
// CNTException
/////////////////////////////////////////////////////////////////////////////
class CNTException : public CExceptionWithOper { // abstract class for dynamic type checking
DECLARE_DYNAMIC(CNTException)
public: // Constructors
CNTException( IN SC sc, IN IDS idsOperation = NULL, IN LPCTSTR pszOperArg1 = NULL, IN LPCTSTR pszOperArg2 = NULL ); CNTException( IN SC sc, IN IDS idsOperation, IN LPCTSTR pszOperArg1, IN LPCTSTR pszOperArg2, IN BOOL bAutoDelete );
// Operations
public: virtual BOOL GetErrorMessage( LPTSTR lpszError, UINT nMaxError, PUINT pnHelpContext = NULL ); void SetOperation( IN SC sc, IN IDS idsOperation, IN LPCTSTR pszOperArg1, IN LPCTSTR pszOperArg2 ) { m_sc = sc; CExceptionWithOper::SetOperation(idsOperation, pszOperArg1, pszOperArg2); }
// Implementation
public: virtual ~CNTException(void);
protected: SC m_sc;
public: SC Sc(void) { return m_sc; }
}; //*** class CNTException
/////////////////////////////////////////////////////////////////////////////
// Global Functions
/////////////////////////////////////////////////////////////////////////////
void ThrowStaticException( IN IDS idsOperation = NULL, IN LPCTSTR pszOperArg1 = NULL, IN LPCTSTR pszOperArg2 = NULL ); void ThrowStaticException( IN SC sc, IN IDS idsOperation = NULL, IN LPCTSTR pszOperArg1 = NULL, IN LPCTSTR pszOperArg2 = NULL );
/////////////////////////////////////////////////////////////////////////////
#endif // _CAEXCEPT_H_
|