Klassendefinition
In der Klassendefinition des ATL-Objekts müssen die folgenden Änderungen vorgenommen werden.
•Die Klasse muss von IXMLSpyPlugIn abgeleitet sein.
•Die "Interface Map" benötigt einen Eintrag für IXMLSpyPlugIn.
•Die Methoden der IDE Plug-In-Schnittstelle müssen deklariert werden.
Diese Änderungen können, wie unten gezeigt, gemacht werden:
#ifndef __XMLSPYIDEPLUGIN_H_
#define __XMLSPYIDEPLUGIN_H_
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CXMLSpyIDEPlugIn
class ATL_NO_VTABLE CXMLSpyIDEPlugIn :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CXMLSpyIDEPlugIn, &CLSID_XMLSpyIDEPlugIn>,
public IXMLSpyPlugIn
{
public:
CXMLSpyIDEPlugIn()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_XMLSPYIDEPLUGIN)
DECLARE_NOT_AGGREGATABLE(CXMLSpyIDEPlugIn)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CXMLSpyIDEPlugIn)
COM_INTERFACE_ENTRY(IXMLSpyPlugIn)
END_COM_MAP()
// IXMLSpyIDEPlugIn
public:
virtual HRESULT _stdcall OnCommand(long nID, IDispatch* pXMLSpy);
virtual HRESULT _stdcall OnUpdateCommand(long nID, IDispatch* pXMLSpy, SPYUpdateAction* pAction);
virtual HRESULT _stdcall OnEvent(long nEventID, SAFEARRAY **arrayParameters, IDispatch* pXMLSpy, VARIANT* pReturnValue);
virtual HRESULT _stdcall GetUIModifications(BSTR* pModificationsXML);
virtual HRESULT _stdcall GetDescription(BSTR* pDescription);
};
#endif //__XMLSPYIDEPLUGIN_H_