| 95 | ComObject(__int64 llVal, VARTYPE vt, USHORT flags = 0) |
| 96 | : mVal64(llVal), mVarType(vt), mEventSink(NULL), mFlags(flags) { } |
| 97 | ~ComObject() |
| 98 | { |
| 99 | if ((VT_DISPATCH == mVarType || VT_UNKNOWN == mVarType) && mUnknown) |
| 100 | { |
| 101 | if (mEventSink) |
| 102 | { |
| 103 | mEventSink->Connect(); |
| 104 | mEventSink->mObject = NULL; |
| 105 | mEventSink->Release(); |
| 106 | } |
| 107 | mUnknown->Release(); |
| 108 | } |
| 109 | else if ((mVarType & (VT_BYREF|VT_ARRAY)) == VT_ARRAY && (mFlags & F_OWNVALUE)) |
| 110 | { |
| 111 | SafeArrayDestroy(mArray); |
| 112 | } |
| 113 | } |
| 114 | }; |
| 115 | |
| 116 |