mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-11 18:07:08 -06:00
Initialer Commit
This commit is contained in:
70
CPP/Windows/COM.h
Normal file
70
CPP/Windows/COM.h
Normal file
@@ -0,0 +1,70 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user