Fri, 16 Jan 2015 18:13:44 +0100
Integrate suggestion from review to improve consistency with existing code.
1 // Windows/COM.h
3 #ifndef __WINDOWS_COM_H
4 #define __WINDOWS_COM_H
6 #include "Common/String.h"
8 namespace NWindows {
9 namespace NCOM {
11 class CComInitializer
12 {
13 public:
14 CComInitializer() { CoInitialize(NULL);};
15 ~CComInitializer() { CoUninitialize(); };
16 };
18 class CStgMedium
19 {
20 STGMEDIUM _object;
21 public:
22 bool _mustBeReleased;
23 CStgMedium(): _mustBeReleased(false) {}
24 ~CStgMedium() { Free(); }
25 void Free()
26 {
27 if(_mustBeReleased)
28 ReleaseStgMedium(&_object);
29 _mustBeReleased = false;
30 }
31 const STGMEDIUM* operator->() const { return &_object;}
32 STGMEDIUM* operator->() { return &_object;}
33 STGMEDIUM* operator&() { return &_object; }
34 };
36 //////////////////////////////////
37 // GUID <--> String Conversions
38 UString GUIDToStringW(REFGUID guid);
39 AString GUIDToStringA(REFGUID guid);
40 #ifdef UNICODE
41 #define GUIDToString GUIDToStringW
42 #else
43 #define GUIDToString GUIDToStringA
44 #endif // !UNICODE
46 HRESULT StringToGUIDW(const wchar_t *string, GUID &classID);
47 HRESULT StringToGUIDA(const char *string, GUID &classID);
48 #ifdef UNICODE
49 #define StringToGUID StringToGUIDW
50 #else
51 #define StringToGUID StringToGUIDA
52 #endif // !UNICODE
55 }}
57 #endif