-
Notifications
You must be signed in to change notification settings - Fork 21
/
Connect.h
66 lines (51 loc) · 1.98 KB
/
Connect.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*!-----------------------------------------------------------------------
connect.h
-----------------------------------------------------------------------!*/
#pragma once
#include "ids.h"
class CConnect;
typedef
IDispatchImpl<_IDTExtensibility2, &__uuidof(_IDTExtensibility2), &__uuidof(__AddInDesignerObjects), 1, 0>
IDTExtensibilityImpl;
/*------------------------------------------------------------------------------
CConnect class - what Outlook uses to communicate with an add-in
------------------------------------------------------------------------------*/
class ATL_NO_VTABLE CConnect
: public CComObjectRootEx<CComSingleThreadModel>
, public CComCoClass<CConnect, &__uuidof(Connect)>
, public IDTExtensibilityImpl
{
public:
CConnect() {}
// Setup the registration found in addin.rgs
static HRESULT WINAPI UpdateRegistry(BOOL bRegister) throw()
{
ATL::_ATL_REGMAP_ENTRY regMapEntries[] =
{ { OLESTR("PROGID"), ADDIN_PROGID }
, { OLESTR("CLSID"), ADDIN_CLSID_STR }
, { OLESTR("TYPELIB"), TYPELIB_GUID_STR }
, { NULL, NULL }
};
return ATL::_pAtlModule->UpdateRegistryFromResource(IDR_ADDIN, bRegister, regMapEntries);
}
DECLARE_NOT_AGGREGATABLE(CConnect)
BEGIN_COM_MAP(CConnect)
COM_INTERFACE_ENTRY(IDTExtensibility2)
END_COM_MAP()
static _ATL_FUNC_INFO DispatchFuncInfo1;
BEGIN_SINK_MAP(CConnect)
END_SINK_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct() { return S_OK; }
void FinalRelease() { }
public:
// IDTExtensibility2 interface
STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch *AddInInst, SAFEARRAY **custom);
STDMETHOD(OnDisconnection)(ext_DisconnectMode RemoveMode, SAFEARRAY **custom );
STDMETHOD(OnAddInsUpdate)(SAFEARRAY **custom );
STDMETHOD(OnStartupComplete)(SAFEARRAY **custom );
STDMETHOD(OnBeginShutdown)(SAFEARRAY **custom );
protected:
_ApplicationPtr m_spApplication;
};
OBJECT_ENTRY_AUTO(__uuidof(Connect), CConnect)