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
|