home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c480 / 19.ddi / MFC / SRC / OLEMISC.CP_ / OLEMISC.CP
Encoding:
Text File  |  1993-02-08  |  6.0 KB  |  178 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library. 
  2. // Copyright (C) 1992 Microsoft Corporation 
  3. // All rights reserved. 
  4. //  
  5. // This source code is only intended as a supplement to the 
  6. // Microsoft Foundation Classes Reference and Microsoft 
  7. // QuickHelp and/or WinHelp documentation provided with the library. 
  8. // See these sources for detailed information regarding the 
  9. // Microsoft Foundation Classes product. 
  10.  
  11. #include "stdafx.h"
  12.  
  13. #ifdef AFX_OLE_SEG
  14. #pragma code_seg(AFX_OLE_SEG)
  15. #endif
  16.  
  17. #ifdef _DEBUG
  18. #undef THIS_FILE
  19. static char BASED_CODE THIS_FILE[] = __FILE__;
  20. #endif
  21.  
  22. /////////////////////////////////////////////////////////////////////////////
  23. // Exceptions for OLE Support
  24.  
  25. #ifdef _DEBUG
  26. // character strings to use for dumping COleException
  27.  
  28. static char BASED_CODE szOK[] = "OLE_OK";
  29. static char BASED_CODE szWAIT_FOR_RELEASE[] = "OLE_WAIT_FOR_RELEASE";
  30. static char BASED_CODE szBUSY[] = "OLE_BUSY";
  31. static char BASED_CODE szErrPROTECT_ONLY[] = "OLE_ERROR_PROTECT_ONLY";
  32. static char BASED_CODE szErrMEMORY[] = "OLE_ERROR_MEMORY";
  33. static char BASED_CODE szErrSTREAM[] = "OLE_ERROR_STREAM";
  34. static char BASED_CODE szErrSTATIC[] = "OLE_ERROR_STATIC";
  35. static char BASED_CODE szErrBLANK[] = "OLE_ERROR_BLANK";
  36. static char BASED_CODE szErrDRAW[] = "OLE_ERROR_DRAW";
  37. static char BASED_CODE szErrMETAFILE[] = "OLE_ERROR_METAFILE";
  38. static char BASED_CODE szErrABORT[] = "OLE_ERROR_ABORT";
  39. static char BASED_CODE szErrCLIPBOARD[] = "OLE_ERROR_CLIPBOARD";
  40. static char BASED_CODE szErrFORMAT[] = "OLE_ERROR_FORMAT";
  41. static char BASED_CODE szErrOBJECT[] = "OLE_ERROR_OBJECT";
  42. static char BASED_CODE szErrOPTION[] = "OLE_ERROR_OPTION";
  43. static char BASED_CODE szErrPROTOCOL[] = "OLE_ERROR_PROTOCOL";
  44. static char BASED_CODE szErrADDRESS[] = "OLE_ERROR_ADDRESS";
  45. static char BASED_CODE szErrNOT_EQUAL[] = "OLE_ERROR_NOT_EQUAL";
  46. static char BASED_CODE szErrHANDLE[] = "OLE_ERROR_HANDLE";
  47. static char BASED_CODE szErrGENERIC[] = "OLE_ERROR_GENERIC";
  48. static char BASED_CODE szErrCLASS[] = "OLE_ERROR_CLASS";
  49. static char BASED_CODE szErrSYNTAX[] = "OLE_ERROR_SYNTAX";
  50. static char BASED_CODE szErrDATATYPE[] = "OLE_ERROR_DATATYPE";
  51. static char BASED_CODE szErrPALETTE[] = "OLE_ERROR_PALETTE";
  52. static char BASED_CODE szErrNOT_LINK[] = "OLE_ERROR_NOT_LINK";
  53. static char BASED_CODE szErrNOT_EMPTY[] = "OLE_ERROR_NOT_EMPTY";
  54. static char BASED_CODE szErrSIZE[] = "OLE_ERROR_SIZE";
  55. static char BASED_CODE szErrDRIVE[] = "OLE_ERROR_DRIVE";
  56. static char BASED_CODE szErrNETWORK[] = "OLE_ERROR_NETWORK";
  57. static char BASED_CODE szErrNAME[] = "OLE_ERROR_NAME";
  58. static char BASED_CODE szErrTEMPLATE[] = "OLE_ERROR_TEMPLATE";
  59. static char BASED_CODE szErrNEW[] = "OLE_ERROR_NEW";
  60. static char BASED_CODE szErrEDIT[] = "OLE_ERROR_EDIT";
  61. static char BASED_CODE szErrOPEN[] = "OLE_ERROR_OPEN";
  62. static char BASED_CODE szErrNOT_OPEN[] = "OLE_ERROR_NOT_OPEN";
  63. static char BASED_CODE szErrLAUNCH[] = "OLE_ERROR_LAUNCH";
  64. static char BASED_CODE szErrCOMM[] = "OLE_ERROR_COMM";
  65. static char BASED_CODE szErrTERMINATE[] = "OLE_ERROR_TERMINATE";
  66. static char BASED_CODE szErrCOMMAND[] = "OLE_ERROR_COMMAND";
  67. static char BASED_CODE szErrSHOW[] = "OLE_ERROR_SHOW";
  68. static char BASED_CODE szErrDOVERB[] = "OLE_ERROR_DOVERB";
  69. static char BASED_CODE szErrADVISE_NATIVE[] = "OLE_ERROR_ADVISE_NATIVE";
  70. static char BASED_CODE szErrADVISE_PICT[] = "OLE_ERROR_ADVISE_PICT";
  71. static char BASED_CODE szErrADVISE_RENAME[] = "OLE_ERROR_ADVISE_RENAME";
  72. static char BASED_CODE szErrPOKE_NATIVE[] = "OLE_ERROR_POKE_NATIVE";
  73. static char BASED_CODE szErrREQUEST_NATIVE[] = "OLE_ERROR_REQUEST_NATIVE";
  74. static char BASED_CODE szErrREQUEST_PICT[] = "OLE_ERROR_REQUEST_PICT";
  75. static char BASED_CODE szErrSERVER_BLOCKED[] = "OLE_ERROR_SERVER_BLOCKED";
  76. static char BASED_CODE szErrREGISTRATION[] = "OLE_ERROR_REGISTRATION";
  77. static char BASED_CODE szErrALREADY_REGISTERED[] = "OLE_ERROR_ALREADY_REGISTERED";
  78. static char BASED_CODE szErrTASK[] = "OLE_ERROR_TASK";
  79. static char BASED_CODE szErrOUTOFDATE[] = "OLE_ERROR_OUTOFDATE";
  80. static char BASED_CODE szErrCANT_UPDATE_CLIENT[] = "OLE_ERROR_CANT_UPDATE_CLIENT";
  81. static char BASED_CODE szErrUPDATE[] = "OLE_ERROR_UPDATE";
  82.  
  83. static LPCSTR BASED_CODE errorStrings[] =
  84. {
  85.     szOK,
  86.     szWAIT_FOR_RELEASE,
  87.     szBUSY,
  88.     szErrPROTECT_ONLY,
  89.     szErrMEMORY,
  90.     szErrSTREAM,
  91.     szErrSTATIC,
  92.     szErrBLANK,
  93.     szErrDRAW,
  94.     szErrMETAFILE,
  95.     szErrABORT,
  96.     szErrCLIPBOARD,
  97.     szErrFORMAT,
  98.     szErrOBJECT,
  99.     szErrOPTION,
  100.     szErrPROTOCOL,
  101.     szErrADDRESS,
  102.     szErrNOT_EQUAL,
  103.     szErrHANDLE,
  104.     szErrGENERIC,
  105.     szErrCLASS,
  106.     szErrSYNTAX,
  107.     szErrDATATYPE,
  108.     szErrPALETTE,
  109.     szErrNOT_LINK,
  110.     szErrNOT_EMPTY,
  111.     szErrSIZE,
  112.     szErrDRIVE,
  113.     szErrNETWORK,
  114.     szErrNAME,
  115.     szErrTEMPLATE,
  116.     szErrNEW,
  117.     szErrEDIT,
  118.     szErrOPEN,
  119.     szErrNOT_OPEN,
  120.     szErrLAUNCH,
  121.     szErrCOMM,
  122.     szErrTERMINATE,
  123.     szErrCOMMAND,
  124.     szErrSHOW,
  125.     szErrDOVERB,
  126.     szErrADVISE_NATIVE,
  127.     szErrADVISE_PICT,
  128.     szErrADVISE_RENAME,
  129.     szErrPOKE_NATIVE,
  130.     szErrREQUEST_NATIVE,
  131.     szErrREQUEST_PICT,
  132.     szErrSERVER_BLOCKED,
  133.     szErrREGISTRATION,
  134.     szErrALREADY_REGISTERED,
  135.     szErrTASK,
  136.     szErrOUTOFDATE,
  137.     szErrCANT_UPDATE_CLIENT,
  138.     szErrUPDATE,
  139. };
  140. #endif //_DEBUG
  141.  
  142.  
  143. IMPLEMENT_DYNAMIC(COleException, CException)
  144.  
  145. COleException::COleException(OLESTATUS status)
  146. {
  147.     ASSERT(status != OLE_OK);
  148.     m_status = status;
  149. }
  150.  
  151. void AFXAPI AfxThrowOleException(OLESTATUS status)
  152. {
  153. #ifdef _DEBUG
  154.     TRACE1("Warning: Throwing OLE Exception (OLESTATUS = %d)\n", status);
  155.     TRACE1("\t[%Fs]\n", (LPCSTR) errorStrings[status]);
  156. #endif
  157.     THROW(new COleException(status));
  158. }
  159.  
  160. /////////////////////////////////////////////////////////////////////////////
  161. // Turn a caught exception into an OLE return code
  162.  
  163. OLESTATUS PASCAL COleException::Process(CException* pAnyException)
  164. {
  165.     OLESTATUS status;
  166.  
  167.     if (pAnyException->IsKindOf(RUNTIME_CLASS(COleException)))
  168.         status = ((COleException*)pAnyException)->m_status;
  169.     else if (pAnyException->IsKindOf(RUNTIME_CLASS(CMemoryException)))
  170.         status = OLE_ERROR_MEMORY;
  171.     else
  172.         status = OLE_ERROR_GENERIC;     // some other problem
  173.  
  174.     return status;
  175. }
  176.  
  177. /////////////////////////////////////////////////////////////////////////////
  178.