让我们建立一个新的ATL项目。首先,添加一个叫着Plugin的简单COM对象。用类向导把_IDTExtensibility2接口添加到Plugin类中。(别忘了选中IsupportErrorInfo复选框。)
类向导会把下述方法添加到Plugin类中:OnConnection、OnDisconnection、OnAddinsUpdate、OnStartupComplete、OnBeginShutdown。本文只处理OnConnection和OnDisconnection方法。
然后,在Plugin头文件中创建一个类型定义(typedef,它只是用来简化代码的),如下所示:
#define APPID 102
class CPlugin;
typedef IDispEventImpl<APPID, CPlugin, &DIID_ApplicationEvents,
&LIBID_Outlook,9,0> OutLookSink;
我们现在需要在Plugin类的继承列表中添加OutLookSink类:
class ATL_NO_VTABLE CPlugin :
public IPlugin,
public IDispatchImpl<_IDTExtensibility2,
&__uuidof(_IDTExtensibility2),
&LIBID_AddInDesignerObjects,
/* wMajor = */ 1, /* wMinor = */ 0>,
public OutLookSink
在Plugin.h文件中为Mso9.dll和Msoutl9.olb引入声明,如下所示:
#import "C:Program FilesCommon FilesDesignermsaddndr.dll"
raw_interfaces_only,
raw_native_types, no_namespace, named_guids, auto_search
#import "C:Program FilesMicrosoft OfficeOfficemso9.dll"
rename_namespace("Office") named_guids
#import "C:Program FilesMicrosoft
OfficeOfficemsoutl9.olb"
rename_namespace("Outlook"), raw_interfaces_only,
named_guids
using namespace Office;
using namespace Outlook;
注意,你需要按照你的系统中的文件路径来修正上面那些被引入文件的路径。