Altium C++ SDK 3.0
Loading...
Searching...
No Matches
DXP.DispatchImpl.h
Go to the documentation of this file.
1#pragma once
2
3#ifndef DXP_DISPATCHIMPL_H_INCLUDED
4#define DXP_DISPATCHIMPL_H_INCLUDED
5
6#include <comdef.h>
7#include <string>
8/*..................................................................................................*/
9#define QUERYINTERFACE_DECL virtual HRESULT __stdcall QueryInterface( const IID & riid, void ** ppvObject)
10
11#define QUERYINTERFACE_IMPL(Class,Parent,Intf) HRESULT __stdcall Class::QueryInterface( const IID & riid, void ** ppvObject) \
12 { \
13 if ( riid == __uuidof(Intf) ) \
14 { \
15 *ppvObject = (Intf *)this; \
16 AddRef(); \
17 return S_OK; \
18 } \
19 else \
20 { \
21 return Parent::QueryInterface(riid, ppvObject); \
22 } \
23 }
24/*..................................................................................................*/
25
26/*..................................................................................................*/
27class CDispatchRecord : public IDispatch
28{
29protected:
30 ULONG mRefCount;
31public:
33
34 // IUnknown
35 virtual HRESULT __stdcall QueryInterface( const IID & riid, void ** ppvObject);
36 virtual ULONG __stdcall AddRef (void);
37 virtual ULONG __stdcall Release(void);
38
39 // IDispatch
40 virtual HRESULT __stdcall GetTypeInfoCount(UINT *pctinfo);
41 virtual HRESULT __stdcall GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
42 virtual HRESULT __stdcall GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
43 virtual HRESULT __stdcall Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags,DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
44};
45/*..................................................................................................*/
46
47/*..................................................................................................*/
49{
50public:
52 virtual ~CDispatchObject() {}
53
54 // IUnknown
55 virtual ULONG __stdcall Release(void);
56
57 IDispatch* GetIDispatch();
58};
59/*..................................................................................................*/
60
61/*..................................................................................................*/
62struct __declspec(uuid("{1DEBA58E-0DF5-4081-93E9-0C1732E7DFAE}"))
63IServicesSupportInternal : public IUnknown
64{
65public:
66 virtual bool SupportsService(std::wstring const AServiceName) = 0;
67};
68/*..................................................................................................*/
69
70/*..................................................................................................*/
72{
73public:
74 // IUnknown
75 virtual HRESULT __stdcall QueryInterface( const IID & riid, void ** ppvObject);
76 virtual ULONG __stdcall AddRef (void) { return CDispatchObject::AddRef();}
77 virtual ULONG __stdcall Release(void) { return CDispatchObject::Release();};
78
79 // IDispatch
80 virtual HRESULT __stdcall Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags,DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
81
82 // IServicesSupportInternal
83 virtual bool SupportsService(std::wstring const AServiceName);
84
86};
87/*..................................................................................................*/
88
89#endif // DXP_DISPATCHIMPL_H_INCLUDED
Definition DXP.DispatchImpl.h:72
virtual HRESULT __stdcall QueryInterface(const IID &riid, void **ppvObject)
virtual ULONG __stdcall AddRef(void)
Definition DXP.DispatchImpl.h:76
virtual ULONG __stdcall Release(void)
Definition DXP.DispatchImpl.h:77
virtual HRESULT __stdcall Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
virtual bool SupportsService(std::wstring const AServiceName)
IServicesSupportInternal * GetServicesSupportInternal()
virtual ULONG __stdcall Release(void)
virtual ~CDispatchObject()
Definition DXP.DispatchImpl.h:52
IDispatch * GetIDispatch()
CDispatchObject()
Definition DXP.DispatchImpl.h:51
virtual HRESULT __stdcall GetTypeInfoCount(UINT *pctinfo)
virtual ULONG __stdcall AddRef(void)
virtual HRESULT __stdcall GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
virtual ULONG __stdcall Release(void)
ULONG mRefCount
Definition DXP.DispatchImpl.h:30
virtual HRESULT __stdcall QueryInterface(const IID &riid, void **ppvObject)
virtual HRESULT __stdcall GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
CDispatchRecord()
Definition DXP.DispatchImpl.h:32
virtual HRESULT __stdcall Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition DXP.DispatchImpl.h:64
virtual bool SupportsService(std::wstring const AServiceName)=0