Altova XMLSpy 2024 Enterprise Edition

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_

 

© 2017-2023 Altova GmbH