michael@0: // Windows/COM.h michael@0: michael@0: #ifndef __WINDOWS_COM_H michael@0: #define __WINDOWS_COM_H michael@0: michael@0: #include "Common/String.h" michael@0: michael@0: namespace NWindows { michael@0: namespace NCOM { michael@0: michael@0: class CComInitializer michael@0: { michael@0: public: michael@0: CComInitializer() { CoInitialize(NULL);}; michael@0: ~CComInitializer() { CoUninitialize(); }; michael@0: }; michael@0: michael@0: class CStgMedium michael@0: { michael@0: STGMEDIUM _object; michael@0: public: michael@0: bool _mustBeReleased; michael@0: CStgMedium(): _mustBeReleased(false) {} michael@0: ~CStgMedium() { Free(); } michael@0: void Free() michael@0: { michael@0: if(_mustBeReleased) michael@0: ReleaseStgMedium(&_object); michael@0: _mustBeReleased = false; michael@0: } michael@0: const STGMEDIUM* operator->() const { return &_object;} michael@0: STGMEDIUM* operator->() { return &_object;} michael@0: STGMEDIUM* operator&() { return &_object; } michael@0: }; michael@0: michael@0: ////////////////////////////////// michael@0: // GUID <--> String Conversions michael@0: UString GUIDToStringW(REFGUID guid); michael@0: AString GUIDToStringA(REFGUID guid); michael@0: #ifdef UNICODE michael@0: #define GUIDToString GUIDToStringW michael@0: #else michael@0: #define GUIDToString GUIDToStringA michael@0: #endif // !UNICODE michael@0: michael@0: HRESULT StringToGUIDW(const wchar_t *string, GUID &classID); michael@0: HRESULT StringToGUIDA(const char *string, GUID &classID); michael@0: #ifdef UNICODE michael@0: #define StringToGUID StringToGUIDW michael@0: #else michael@0: #define StringToGUID StringToGUIDA michael@0: #endif // !UNICODE michael@0: michael@0: michael@0: }} michael@0: michael@0: #endif