|
|
1.1 root 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: /////////////////////////////////////////////////////////////////////////////
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.