1 // Windows/PropVariant.h 2 3 #ifndef __WINDOWS_PROPVARIANT_H 4 #define __WINDOWS_PROPVARIANT_H 5 6 #include "../Common/MyWindows.h" 7 #include "../Common/Types.h" 8 9 namespace NWindows { 10 namespace NCOM { 11 12 class CPropVariant : public tagPROPVARIANT 13 { 14 public: CPropVariant()15 CPropVariant() { vt = VT_EMPTY; } ~CPropVariant()16 ~CPropVariant() { Clear(); } 17 CPropVariant(const PROPVARIANT& varSrc); 18 CPropVariant(const CPropVariant& varSrc); 19 CPropVariant(BSTR bstrSrc); 20 CPropVariant(LPCOLESTR lpszSrc); CPropVariant(bool bSrc)21 CPropVariant(bool bSrc) { vt = VT_BOOL; boolVal = (bSrc ? VARIANT_TRUE : VARIANT_FALSE); }; CPropVariant(UInt32 value)22 CPropVariant(UInt32 value) { vt = VT_UI4; ulVal = value; } CPropVariant(UInt64 value)23 CPropVariant(UInt64 value) { vt = VT_UI8; uhVal = *(ULARGE_INTEGER*)&value; } CPropVariant(const FILETIME & value)24 CPropVariant(const FILETIME &value) { vt = VT_FILETIME; filetime = value; } CPropVariant(Int32 value)25 CPropVariant(Int32 value) { vt = VT_I4; lVal = value; } CPropVariant(Byte value)26 CPropVariant(Byte value) { vt = VT_UI1; bVal = value; } CPropVariant(Int16 value)27 CPropVariant(Int16 value) { vt = VT_I2; iVal = value; } 28 // CPropVariant(LONG value, VARTYPE vtSrc = VT_I4) { vt = vtSrc; lVal = value; } 29 30 CPropVariant& operator=(const CPropVariant& varSrc); 31 CPropVariant& operator=(const PROPVARIANT& varSrc); 32 CPropVariant& operator=(BSTR bstrSrc); 33 CPropVariant& operator=(LPCOLESTR lpszSrc); 34 CPropVariant& operator=(bool bSrc); 35 CPropVariant& operator=(UInt32 value); 36 CPropVariant& operator=(UInt64 value); 37 CPropVariant& operator=(const FILETIME &value); 38 39 CPropVariant& operator=(Int32 value); 40 CPropVariant& operator=(Byte value); 41 CPropVariant& operator=(Int16 value); 42 // CPropVariant& operator=(LONG value); 43 44 HRESULT Clear(); 45 HRESULT Copy(const PROPVARIANT* pSrc); 46 HRESULT Attach(PROPVARIANT* pSrc); 47 HRESULT Detach(PROPVARIANT* pDest); 48 49 HRESULT InternalClear(); 50 void InternalCopy(const PROPVARIANT* pSrc); 51 52 int Compare(const CPropVariant &a1); 53 }; 54 55 }} 56 57 #endif 58