Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cComDispatch.h
Go to the documentation of this file.
1 //
5 //
6 
7 #ifndef _INC_cComDispatch_H
8 #define _INC_cComDispatch_H
9 #ifndef NO_PRAGMA_ONCE
10 #pragma once
11 #endif
12 
13 #include "../GrayLibBase.h"
14 
15 #ifdef _WIN32
17 
18 namespace GrayLib
19 {
20  class GRAYLIB_LINK cComDispatch
21  {
27 
28  public:
29  IDispatch* m_pDispatch;
30  cIUnkPtr<ITypeInfo> m_pTypeInfo;
31  const GUID& m_rguidTypeLib;
32  const GUID& m_rguidTypeInfo;
33 
34  protected:
35  cComDispatch(IDispatch* pDispatch, const GUID& rguidTypeLib, const GUID& rguidTypeInfo);
36  virtual ~cComDispatch();
37 
38  public:
39  // IDispatch methods
40  STDMETHODIMP GetTypeInfoCount(UINT*);
41  STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
42  STDMETHODIMP GetIDsOfNames(const IID&, LPOLESTR*, UINT, LCID, DISPID*);
43  STDMETHODIMP Invoke(DISPID, const IID&, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*);
44 
45  HRESULT loadTypeInfo();
46  };
47 
48 #define IDISPATCH_DISAMBIG_R(_CLASS) \
49  STDMETHODIMP GetTypeInfoCount(UINT* a) \
50  { return _CLASS::GetTypeInfoCount(a); } \
51  STDMETHODIMP GetTypeInfo(UINT a, LCID b, LPTYPEINFO* c) \
52  { return _CLASS::GetTypeInfo(a,b,c); } \
53  STDMETHODIMP GetIDsOfNames(const IID& a,LPOLESTR* b,UINT c,LCID d,DISPID* e) \
54  { return _CLASS::GetIDsOfNames(a,b,c,d,e); } \
55 
56 #define IDISPATCH_DISAMBIG(_CLASS) \
57  IDISPATCH_DISAMBIG_R(_CLASS) \
58  STDMETHODIMP Invoke(DISPID a,const IID& b,LCID c,WORD d,DISPPARAMS* e,VARIANT* f,EXCEPINFO* g,UINT* h) \
59  { return _CLASS::Invoke(a,b,c,d,e,f,g,h);}
60 };
61 
62 #endif // _WIN32
63 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cMesh.h:22
Definition: IUnknown.h:34