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