rlm@1: // Windows/PropVariant.h rlm@1: rlm@1: #ifndef __WINDOWS_PROPVARIANT_H rlm@1: #define __WINDOWS_PROPVARIANT_H rlm@1: rlm@1: #include "../Common/MyWindows.h" rlm@1: #include "../Common/Types.h" rlm@1: rlm@1: namespace NWindows { rlm@1: namespace NCOM { rlm@1: rlm@1: class CPropVariant : public tagPROPVARIANT rlm@1: { rlm@1: public: rlm@1: CPropVariant() { vt = VT_EMPTY; wReserved1 = 0; } rlm@1: ~CPropVariant() { Clear(); } rlm@1: CPropVariant(const PROPVARIANT& varSrc); rlm@1: CPropVariant(const CPropVariant& varSrc); rlm@1: CPropVariant(BSTR bstrSrc); rlm@1: CPropVariant(LPCOLESTR lpszSrc); rlm@1: CPropVariant(bool bSrc) { vt = VT_BOOL; wReserved1 = 0; boolVal = (bSrc ? VARIANT_TRUE : VARIANT_FALSE); }; rlm@1: CPropVariant(UInt32 value) { vt = VT_UI4; wReserved1 = 0; ulVal = value; } rlm@1: CPropVariant(UInt64 value) { vt = VT_UI8; wReserved1 = 0; uhVal = *(ULARGE_INTEGER*)&value; } rlm@1: CPropVariant(const FILETIME &value) { vt = VT_FILETIME; wReserved1 = 0; filetime = value; } rlm@1: CPropVariant(Int32 value) { vt = VT_I4; wReserved1 = 0; lVal = value; } rlm@1: CPropVariant(Byte value) { vt = VT_UI1; wReserved1 = 0; bVal = value; } rlm@1: CPropVariant(Int16 value) { vt = VT_I2; wReserved1 = 0; iVal = value; } rlm@1: // CPropVariant(LONG value, VARTYPE vtSrc = VT_I4) { vt = vtSrc; lVal = value; } rlm@1: rlm@1: CPropVariant& operator=(const CPropVariant& varSrc); rlm@1: CPropVariant& operator=(const PROPVARIANT& varSrc); rlm@1: CPropVariant& operator=(BSTR bstrSrc); rlm@1: CPropVariant& operator=(LPCOLESTR lpszSrc); rlm@1: CPropVariant& operator=(bool bSrc); rlm@1: CPropVariant& operator=(UInt32 value); rlm@1: CPropVariant& operator=(UInt64 value); rlm@1: CPropVariant& operator=(const FILETIME &value); rlm@1: rlm@1: CPropVariant& operator=(Int32 value); rlm@1: CPropVariant& operator=(Byte value); rlm@1: CPropVariant& operator=(Int16 value); rlm@1: // CPropVariant& operator=(LONG value); rlm@1: rlm@1: HRESULT Clear(); rlm@1: HRESULT Copy(const PROPVARIANT* pSrc); rlm@1: HRESULT Attach(PROPVARIANT* pSrc); rlm@1: HRESULT Detach(PROPVARIANT* pDest); rlm@1: rlm@1: HRESULT InternalClear(); rlm@1: void InternalCopy(const PROPVARIANT* pSrc); rlm@1: rlm@1: int Compare(const CPropVariant &a1); rlm@1: }; rlm@1: rlm@1: }} rlm@1: rlm@1: #endif