Descripción de interfaz (IDL)
El IDL del objeto ATL recién creado contiene una declaración para una interfaz COM.
•Esta declaración de interfaz debe reemplazarse con la declaración de IXMLSpyPlugIn tal y como aparece más abajo.
•El IDL también debe incluir la definición de la enumeración SPYUpdateAction.
•Reemplace el nombre de interfaz predeterminado generado (creado con el asistente) con el nombre IXMLSpyPlugIn en la declaración coclass. El IDL se debería parecer al código del ejemplo siguiente:
Tras crear el objeto ATL, es necesario implementar la interfaz del complemento de XMLSpy para entornos IDE:
import "oaidl.idl";
import "ocidl.idl";
// ----- inserte este bloque en su archivo IDL -----
typedef enum {
spyEnable = 1,
spyDisable = 2,
spyCheck = 4,
spyUncheck = 8
} SPYUpdateAction;
// ----- fin del bloque insertado ----
// ----- Por, ej. entrada de interfaz generada automáticamente por el asistente ATL -----
// [
// object,
// uuid(AB7CD86A-8145-429A-A1F3-270692EO8AFC),
// helpstring("IXMLSpyPlugIn Interface")
// pointer_default(unique)
// ]
// interface IXMLSpyPlugIn : IUnknown
// {
// };
// ----- fin de la entrada de interfaz generada automáticamente
// ----- reemplazar la entrada de interfaz (ver más arriba) generada por el asistente ATL con este bloque -----
[
odl,
uuid(88F2A622-4B7E-42CD-8D04-3C0E5389DD85),
helpstring("IXMLSpyPlugIn Interface")
]
interface IXMLSpyPlugIn : IUnknown
{
HRESULT _stdcall OnCommand([in] long nID, [in] IDispatch* pXMLSpy);
HRESULT _stdcall OnUpdateCommand([in] long nID, [in] IDispatch* pXMLSpy, [out, retval] SPYUpdateAction* pAction);
HRESULT _stdcall OnEvent([in] long nEventID, [in] SAFEARRAY(VARIANT)* arrayParameters, [in] IDispatch* pXMLSpy, [out, retval] VARIANT* pReturnValue);
HRESULT _stdcall GetUIModifications([out, retval] BSTR* pModificationsXML);
HRESULT _stdcall GetDescription([out, retval] BSTR* pDescription);
};
// ----- fin del bloque -----
// ----- El código que aparece ahora lo genera automáticamente el asistente ATL y puede ser diferente en cada caso -----
[
uuid(24FE0D1B-3FC0-494E-B36E-1D4CE412B014),
version(1.0),
helpstring("XMLSpyIDEPlugInDLL 1.0 Type Library")
]
library XMLSPYIDEPLUGINDLLLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(3800E791-7F6B-4ACD-9E32-2AC184444501),
helpstring("XMLSpyIDEPlugIn Class")
]
coclass XMLSpyIDEPlugIn
{
[default] interface IXMLSpyPlugIn; // ----- definir IXMLSpyPlugIn como interfaz predeterminada -----
};
};