71 lines
1.3 KiB
C++
71 lines
1.3 KiB
C++
// Windows/COM.h
|
|
|
|
#ifndef __WINDOWS_COM_H
|
|
#define __WINDOWS_COM_H
|
|
|
|
#include "../Common/MyString.h"
|
|
|
|
namespace NWindows {
|
|
namespace NCOM {
|
|
|
|
#ifdef _WIN32
|
|
|
|
class CComInitializer
|
|
{
|
|
public:
|
|
CComInitializer()
|
|
{
|
|
#ifdef UNDER_CE
|
|
CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
|
#else
|
|
// it's single thread. Do we need multithread?
|
|
CoInitialize(NULL);
|
|
#endif
|
|
};
|
|
~CComInitializer() { CoUninitialize(); }
|
|
};
|
|
|
|
class CStgMedium
|
|
{
|
|
STGMEDIUM _object;
|
|
public:
|
|
bool _mustBeReleased;
|
|
CStgMedium(): _mustBeReleased(false) {}
|
|
~CStgMedium() { Free(); }
|
|
void Free()
|
|
{
|
|
if (_mustBeReleased)
|
|
ReleaseStgMedium(&_object);
|
|
_mustBeReleased = false;
|
|
}
|
|
const STGMEDIUM* operator->() const { return &_object;}
|
|
STGMEDIUM* operator->() { return &_object;}
|
|
STGMEDIUM* operator&() { return &_object; }
|
|
};
|
|
|
|
#endif
|
|
|
|
/*
|
|
//////////////////////////////////
|
|
// GUID <--> String Conversions
|
|
UString GUIDToStringW(REFGUID guid);
|
|
AString GUIDToStringA(REFGUID guid);
|
|
#ifdef UNICODE
|
|
#define GUIDToString GUIDToStringW
|
|
#else
|
|
#define GUIDToString GUIDToStringA
|
|
#endif
|
|
|
|
HRESULT StringToGUIDW(const wchar_t *string, GUID &classID);
|
|
HRESULT StringToGUIDA(const char *string, GUID &classID);
|
|
#ifdef UNICODE
|
|
#define StringToGUID StringToGUIDW
|
|
#else
|
|
#define StringToGUID StringToGUIDA
|
|
#endif
|
|
*/
|
|
|
|
}}
|
|
|
|
#endif
|