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