|
1 // Windows/COM.h |
|
2 |
|
3 #ifndef __WINDOWS_COM_H |
|
4 #define __WINDOWS_COM_H |
|
5 |
|
6 #include "Common/String.h" |
|
7 |
|
8 namespace NWindows { |
|
9 namespace NCOM { |
|
10 |
|
11 class CComInitializer |
|
12 { |
|
13 public: |
|
14 CComInitializer() { CoInitialize(NULL);}; |
|
15 ~CComInitializer() { CoUninitialize(); }; |
|
16 }; |
|
17 |
|
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 }; |
|
35 |
|
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 |
|
45 |
|
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 |
|
53 |
|
54 |
|
55 }} |
|
56 |
|
57 #endif |