1. 在类声明之前添加如下语句:
#define APPOBJ 101
typedef IDispEventImpl
&LIBID_WPS,1,0> AppHandler;
其中CWPSAddin为你的addin实现类,如果你要接收Application事件,则第三个模板参数为DIID_ApplicationEvents,若要接收Document事件则为DIID_DocumentEvents,后面的参数可以同上,当然AppHandler也改为DocHandler。
2. 在适当的时机加入此语句:AppHandler::DispEventAdvise(m_pApp);比如在添加完菜单项或工具栏按钮后,在插件断开的时候OnDisconnection调用AppHandler::DispEventUnadvise(m_pApp);
m_pApp为OnConnection传入的Application指针。
3. 将AppHandler或DocHandler加为你的addin实现类的基类。
4. 响应函数的要求:
1) 原型
按钮响应和其他事件的接收函数原型不同:
按钮响应: HRESULT __stdcall OnBtnClicked(long hWnd);
事件接收: void __stdcall OnQuit();
2) 必须为该类的类成员。
3) 按钮响应函数应该加入到该组件接口中,在对应的idl文件中对应的接口:
interface IWPSAddin : public IDispatch
{
HRESULT OnBtnClicked([in]long hWnd); // 响应函数的接口方法
};
这一步很重要!






